基本数据类型变量就是用来储存值而保留的内存位置。这就意味着当你创建一个变量时就会在内存中占用一定的空间。

基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字字母。

Java 中有两种有效地数据类型:

原始数据类型

引用数据类型

原始数据类型

Java 支持 8 种原始数据类型。原始数据类型是由该语言预先定义的并用关键词命名的。下面让我们深入学习一下这 8 种数据类型。

字节型(byte)

字节型是一种 8 位有正负的二进制整数

最小值是 -128(-2^7)

最大值是 127(2^7-1)

默认值为 0

字节型数据类型主要是为了在大型数组内节省空间,主要是替代整数由于字节型比整数小 4 倍。

例如:

byte a = 100 , byte b = -50

短整数(short)

短整数是一种 16 位有正负的二进制整数

最小值是 -32768(-2^15)

最大值是 32767(2^15-1)

短整数类型的数据也可以像字节型一样用于节省空间。短整数比整数小两倍

默认值为 0

例如:

short s = 10000, short r = -20000

整数型(int)

整数型是一种 32 位有正负的二进制整数

最小值是 - 2,147,483,648(-2^31)

最大值是 2,147,483,647(2^31 -1)

整数型一般默认被应用于整数值除非担心内存不够用。

默认值为 0

例如:

int a = 100000, int b = -200000

长整型(long)

长整型是一种 64 位有正负的二进制整数

最小值是 -9,223,372,036,854,775,808(-2^63)

最大值是 9,223,372,036,854,775,807 (2^63 -1)

这种数据类型一般是在需要比整数型范围更大时应用。

默认值为 0L

例如:

long a = 100000L, int b = -200000L

浮点型(float)

浮点型数据是一种单精度的 32 位 IEEE 754 标准下的浮点数据。

浮点型数据主要是为了在大型浮点数字数组中节约内存。

默认值是 0.0f。

浮点型数据不能用于如货币这样的精确数据。

例如:

float f1 = 234.5f

双精度型(double)

双精度型数据是一种双精度的 64 位 IEEE 754 标准下的浮点数据。

这种数据类型主要是默认被用于表示小数的值,一般是默认的选择。

双精度型数据不能用于如货币这样的精确数据。

默认值是 0.0d

例如:

double d1 = 123.4

布尔型(boolean)

布尔型数据代表一个信息比特。

它只有两个可能的值:真(true)和假(false)

这种数据类型用于真假条件下的简单标记。

默认值是假(false)

例如:

boolean one = true

字符型(char)

字符型数据是简单的 16 位 Unicode 标准下的字符。

最小值是: '\u0000' (或 0)。

最大值是: '\uffff' (或 65,535 )。

字符型数据可以用来储存任意字母。

例如: char letter A(字符型的字母A) ='A'

引用数据类型引用数据类型是由类的编辑器定义的。他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Employee, Puppy 等等。

类对象和数组变量就是这种引用数据类型。

任何引用数据类型的默认值都为空。

一个引用数据类型可以被用于任何声明类型和兼容类型的对象。

例如:

Animal animal = new Animal("giraffe");

Java 常量常量是代表固定值的源代码。他们直接以代码的形式代表而没有任何估计。

常量可以被分配给任意的原始变量类型。例如:

byte a = 68;

char a = 'A'

字节型,整数型,长整型和短整型也可以由十进制,十六进制和八进制计数系统表示。

当用这些技术系统表示直接量时,前缀 0 是为了标明八进制,前缀 0x 是为了标明十六进制。例如:

int decimal = 100;

int octal = 0144;

int hexa = 0x64;

Java 中的字符串型常量的规定和其他大多数语言一样,也是要写在双引号中间。字符串型直接量的例子如下:

"Hello World"

"two\nlines"

"\"This is in quotes\""

字符和字符串型常量可以包含任意的 Unicode 字母。例如:

char a = '\u0001';

String a = "\u0001";

Java 语言也支持一些特殊的转义序列的字符和字符串直接量。他们是:转义字符

含义

\n

换行 (0x0a)

\r

回车 (0x0d)

\f

换页 (0x0c)

\b

退格 (0x08)

\s

空格 (0x20)

\t

tab

\"

双引号

\'

单引号

\

反斜杠

\ddd

八进制字符 (ddd)

\uxxxx

十六进制 UNICODE 字符 (xxxx)

变量类型变量可以给我们提供我们程序可以操纵的命名的存储。Java 中的每种变量都有特定的类型,这决定了变量的大小和它的设计占用内存空间;这一些列的值可以存储在那个内存空间中;变量可以应用的操作。

在使用前你必须现将所要使用的变量进行声明。声明变量的基本格式如下:

data type variable [ = value][, variable [= value] ...] ;

这里的 data type 是 Java 的一种数据类型,variable 是一种变量的名称。要声明一个以上的特定变量类型,你可以采用逗号分隔开。

下面是 Java 中有效的变量声明和赋值的例子:

int a, b, c; // Declares three ints, a, b, and c.

int a = 10, b = 10; // Example of initialization

byte B = 22; // initializes a byte type variable B.

double pi = 3.14159; // declares and assigns a value of PI.

char a = 'a'; // the char variable a iis initialized with value 'a'

Java 中共有三种变量:

本地变量

实例变量

类、静态变量

本地变量

本地变量在方法、构造器或者块中声明

本地变量在方法、构造器或者块进入时被创建,一旦退出该变量就会被摧毁

可访问描述符不能用于本地变量

本地变量仅在已经声明的方法、构造器或者块中可见

本地变量在栈深度内部实施

本地变量没有默认值,因此本地变量必须被声明并且在第一次使用前要给它赋值

例子

这里,age(年龄)是本地变量。这是在 pupAge() 方法下定义的,它的范围仅限于这个方法。

public class Test{

public void pupAge(){

int age = 0;

age = age + 7;

System.out.println("Puppy age is : " + age);

}

public static void main(String args[]){

Test test = new Test();

test.pupAge();

}

}

上述代码会输出如下结果:

Puppy age is: 7

例子

下面的例子使用了本地变量 age 但是没有进行初始化,所以在编辑是就会显示错误。

public class Test{

public void pupAge(){

int age;

age = age + 7;

System.out.println("Puppy age is : " + age);

}

public static void main(String args[]){

Test test = new Test();

test.pupAge();

}

}

编辑时会产生如下错误:

Test.java:4:variable number might not have been initialized

age = age + 7;

^

1 error

实例变量

实例变量在类中声明,但是它在方法、构造器或者块外。

当堆中的对象被分配了一个空间时,每个实例变量的位置就被创建了。

当对象采用关键字“ new ”创建时实例变量就被创建了,当对象被销毁时它也就被销毁了。

实例变量的值必须被一个以上的方法、构造器或者块,或者类中必须出现的对象的状态的重要部分所引用。

实例变量可以在类水平上在使用前或者使用后声明。

实例变量可以用可访问描述符。

实例变量对类中的所有方法、构造器或者块可见。一般来讲,推荐将这些变量私有(访问层面)。然而子类的可见性可用可访问描述符给予那些变量。

实例变量有默认值。数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。

实例变量可以采用直接在类中叫名字方式访问。然而在静态方法和不同的类(实例变量可以被访问)中应当使用完全限定名称。ObjectReference.VariableName

例子

import java.io.*;

public class Employee{

// this instance variable is visible for any child class.

public String name;

// salary variable is visible in Employee class only.

private double salary;

// The name variable is assigned in the constructor.

public Employee (String empName){

name = empName;

}

// The salary variable is assigned a value.

public void setSalary(double empSal){

salary = empSal;

}

// This method prints the employee details.

public void printEmp(){

System.out.println("name : " + name );

System.out.println("salary :" + salary);

}

public static void main(String args[]){

Employee empOne = new Employee("Ransika");

empOne.setSalary(1000);

empOne.printEmp();

}

}

上述代码会输出如下结果:

name : Ransika

salary :1000.0

类、静态变量

类变量也叫静态变量,它是在类中用 static 关键字声明的,但是它在方法、构造器或者块之外。

每个类中只有一个类变量,不管这个类有多少对象。

除了作为常量被声明之外,类变量很少被应用。常量是被作为 public、private, final 和 static 被声明的变量。实例变量的初始值不会被改变。

静态变量存储在静态内存中,很少采用静态变量而不是声明结束或者用常量public 或 private 之一。

静态变量随着程序的开始和结束而开始和结束。

可见性和实例变量相似。然而大多数静态变量被声明为public由于他们必须为类的使用者所用。

默认值和实例变量相似。对于数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。除此之外,可以在特殊的静态初始化区赋值。

静态变量可以用类的名称访问。ClassName.VariableName

当静态变量被作为 public static final 声明时,变量(常量)名称都要用大写字母。如果静态变量不是 public 和 final,它的命名方法和实例变量和本地变量相同。

例子

import java.io.*;

public class Employee{

// salary variable is a private static variable

private static double salary;

// DEPARTMENT is a constant

public static final String DEPARTMENT = "Development ";

public static void main(String args[]){

salary = 1000;

System.out.println(DEPARTMENT+"average salary:"+salary);

}

}

上述代码会输出如下结果:

Development average salary:1000

注:如果变量从类外访问,常量就必须以 Employee.DEPARTMENT 访问。

64位 java 数据类型_全面解析Java支持的数据类型及Java的常量和变量类型相关推荐

  1. 全网最硬核 Java 新内存模型解析与实验 - 1. 什么是 Java 内存模型

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  2. 64位处理器_快看看你的电脑是64位还是32位操作系统,处理器支持64位可升级

    昨天把系统又重装了一下,猛然发现,我的电脑可以装64位操作系统,而我一直用的是32位操作系统,因为几年前,64位操作系统缺乏驱动,市面上的软件在32位操作系统兼容性好,而这几年,硬件配置的提高,64位 ...

  3. Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:()

    例题 (多选)Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:() A. Java反射主要涉及的类如Class, Method, Fi ...

  4. mediumtext java类型_编辑框不支持MEDIUMTEXT数据类型

    我的原始需求是: MySQL8表字段是 MEDIUMTEXT,新增.修改记录时报错 实现过程中遇到的问题: java.lang.RuntimeException: 当前数据类型无法匹配数据库字段类型: ...

  5. 斯坦福java下载_斯坦福解析器java错误

    我正在研究NLP,我想用斯坦福解析器从文本中提取名词短语,我使用的解析器版本是3.4.1 这是我使用的示例代码 package stanfordparser; import java.util.Col ...

  6. Java高级面试题解析(二):百度Java面试题前200页(精选)

    基本概念 操作系统中 heap 和 stack 的区别 heap是堆,stack是栈,是两种不同的数据结构.堆是队列优先,先进先出:栈是先进后出. 在java多线程中,每个线程都有自己的栈:不同的线程 ...

  7. 反转字符串java实现_反转字符串的几种实现(Java)

    反转字符串的几种实现(Java) 首先第一种是利用Java中的类库对象进行反转 //第一种 使用Java类库的diam实现反转 public String reverse(String str){ S ...

  8. python中变量类型在程序中可以改变_详细解析Python当中的数据类型和变量

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...

  9. 黑莓系统可以玩java吗_黑莓开发环境搭建windows7+eclipse+BlackBerry Java Plug+JDK6

    最近有点空闲时间,所以就学学黑莓开发,当然要开发第一步就是搭建开发环境,google了一下,有很多教程,但都是很老的了,可能是因为国内开发黑莓的人很少吧.黑莓的好处就是出了名的安全,所以有一批忠实的粉 ...

最新文章

  1. linux 系统性能指标采样脚本
  2. Tensorflow— word2vec
  3. Tensorflow一些常用基本概念与函数(1)
  4. TThread深入分析
  5. 30个创意出色的非常实用的jquery框架插件-(视觉大背景,瀑布流效果)
  6. BLE Mesh(2)—— 基本术语及含义
  7. spring定时任务详解(@Scheduled注解)多线程讲解
  8. asp.net core 系列之webapi集成EFCore的简单操作教程
  9. 利用varnish构建httpd缓存服务器
  10. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询
  11. Qt编写自定义控件属性设计器
  12. xlsx文件打开乱码_excel表格文件打开都是乱码怎么解决
  13. 《丁丁历险记系列之委托》-- 摘自http://www.cnblogs.com/xfxxx/archive/2010/04/03/1703839.html...
  14. Redis入门完整教程:CacheCloud用户功能
  15. HbuilderX 2.6.15 版本说明
  16. 睡眠障碍,正在“杀死”3亿中国人
  17. 北邮计算机考研专业课分值,北邮计算机考研分数线
  18. 男生晚上做什么兼职好?有什么好兼职推荐吗?
  19. 【QT数字图像处理】(三)QSlider滑块学习
  20. xshell6使用技巧_Xshell 6怎么设置为中文-Xshell 6设置为中文的方法 - 河东软件园

热门文章

  1. 解决Springboot+JPA中多表关联查询会查询多次的问题(n+1查询问题)
  2. Mysql 数据库锁表的原因和解决方法
  3. 解决ajax的status=0问题
  4. play store显示“从服务器检索信息时出错。DF-DFERH-01”问题解决
  5. mysql 安装问题一:由于找不到MSVCR120.dll,无法继续执行代码.重新安装程序可能会解决此问题。
  6. 如何将所有浏览器的div垂直居中?
  7. 补第四周作业总结——8 puzzle
  8. Synchronization (computer science)
  9. 记录转化为有层次结构的树状列表的通用算法
  10. 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息