JAVA变量
变量就是指代在内存中开辟的存储空间,用于存方运算过程中需要用到的数据
int a=5;
int b=6;
int c=a+b;
//变量a,b,c指代内存中三块用于存储整数的存储空间,分别用来存储两个整数以及这两个整数之和。
对于变量我们需要关注如下几个方面:
变量的声明:用特定的语法声明一个变量,让运行环境为其分配空间;
变量的命名:变量需要有个见名知以上的名字,而且要符合Java语言规范;
变量的初始化:变量声明后,要为其赋一个确定的初始值后再使用;
变量的访问:可以对变量中的数据进行存取,操作,但必须和其类型匹配。
变量的声明:
当需要使用一个变量时,必须对该变量进行声明
变量的声明包含两点:变量名和变量类型。
注意:JVM会为该变量在内存中开辟存储空间,不同的变量类型决定了存储空间的结构。
Java语言语法规定,变量使用之前必须声明,否则会有编译错误。
一条语句可以声明多个同类型变量,中间用逗号分隔。
变量的命名
命名需要符合Java标识符语法要求:
-----可以有字母,数字,“_”和“$”符组成;
-----首字符不能以数字开头;
-----Java大小写敏感,命名变量时需要注意;
-----不能使用Java保留字(一些Java语言规定好的,有特殊含义的字符),如:int if for break;
-----中文可以作为变量名,但不提倡使用;
注意:Java变量名的定义应该“见名知意”;同时,Java编译规范要求:变量命名应该采用驼峰命名法“
”,即如果变量的名字由多个单词组成,出第一个单词外,其他单词首字母大写,其余的字母小写;
变量的初始化
未经初始化的变量不能使用
Java语言规定变量在使用之前必须初始化,即必须给该变量赋予特定的值。
----C语言中,变量使用之前可以不需要初始化,但是,其初始值不确定;Java语言的设计者为了避免因此而带来的错误,规定变量必须初始化之后才能使用。
可以在变量声明时初始化:int a=3;
可以在变量声明以后,通过赋值语句对变量进行初始化,但一定确保在第一次使用该变量之前:int sum; sum=0;
变量的访问
变量是存放数据的空间,可以对其赋值,更改和操作;要把变量的操作理解为是对其所存储的数据的操作
变量在声明时指定了类型,Java编译器会检测对该变量的操作是否与其类型匹配,如果对变量的赋值或者操作与其类型不匹配,会产生编译错误。
Java基本类型
8种基本数据类型
Java语言有8种基本数据类型,分别用于存储整数,浮点数,字符数据和布尔数据类型
整数类型:byte short int long
浮点类型:float double
字符类型:char
比尔类型:boolean
8种基本类型的存储空间:
byte:1个字节(8位)
short:2个字节(16位)
int:4个字节(32位)
long:8个字节(64位)
float:4个字节(32位)
double:8个字节(64位)
char:2个字节(16位)
boolean:1个字节(8位):存储逻辑变量true/false
int类型
int 是最常用的整数类型。一个int 类型的变量占用4个字节(32位),最大表示范围为:-2^31~2^31-1,即-2147483648~2147483647.
整型数据的除法运算中取整:两个整数相除,会舍弃小数的部分,结果也是整数
运算时要防止溢出的发生:
整数运算的溢出:两个整数进行运算时,其结果可能会超过整数的范围而溢出。正数过大而产生溢出。结果为负数;负数过大而产生的溢出,结果为整数。
int a=2147483647 ;//输出结果为a=-2147483648 溢出
int b=-2147483648;//输出结果为 b=2147483647 溢出
注意:整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,将会出现编译错误。
除了通常的十进制书写形式,整数直接量也经常写十六进制的形式(以0x或0x开头)或8进制的形式(以0开头)
long类型
在表示整数时,如果int 类型的范围不够,可以使用long型,一个long型的变量占用8个字节(64位),最大的表示范围为:-2^63~2^63-1,即-9223372036854775808~9223372036854775807
如果要表示long 直接量,需要以L或l结尾。如 long a=1000000000l;
通过时间毫秒数来存储日期和时间
JDK提供System.currentTimeMillis()方法,返回1970年1月1日零点到此时此刻所经历的毫秒数,其数据类型为long,该方法经常用于计时操作。
long time=System.currentTimeMillis();
System.out.println(time);
double类型
使用double进行浮点数的运算
浮点数,就是小数,包括:float和double
double类型的精度值是float类型的两倍,这正是其名称(双精度)的来由。
浮点数的直接量有两种写法:
---通常写法,如:3.14,314,0.1,5.
---科学计数法:1.25E2 , 1.25e2 , 1.25E-2其中:1.25E2表示1.25乘以10的2次方。
默认的浮点数直接量为double型,如果需要表示float类型的直接量,需要加"f"或"F"后缀。例如:float f1=3.14f
注意:2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确表示1/3一样。
所以,2进制表示10进制会有舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。
如果需要精确的运算可以考虑采用BigDecimal类来实现
char 类型
在对char型变量赋值时可以采用如下三种方式:
----字符直接量:形如‘A’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char 型变量只能存储一个字符。
----整型直接量:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。
----Unicode形式:形如'/u0041',Unicode字符的16进制形式
如:
char c1=65;
char c2='A';
char c3='\u0041';
使用转义字符
对于不方便输出的字符采用转义字符表示,例如:
'\n':表示回车符
'\r':表示换行符
'\\':表示反斜杠(\)
'\':表示单引号(')
'\"':表示双引号(")
boolean 类型
boolaen 类型适用于逻辑运算,表示某个条件是否成立。一般用于程序的流程控制。
boolean类型只允许取值true或false ,true 表示成立而false表示条件不成立
boolean型变量经常用于存储关系运算的结果,所谓关系运算就是比较两个变量的大小相等等关系。
基本类型间的转换
不同的基本类型直接可以相互转换
----自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。类型的大小关系如下:
byte-->short--->int--->long--->float--->double
char--->int
----强制转换:从大类型到小类型需要强制转换符:(目标类型)变量
注:强制转换可能会造成精度丧失和溢出。
多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转换
byte,char,short转换为int
byte,char,short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:
----int 直接量可以赋值给byte,char和short,只要不超过其表示范围。
----byte,char,short三种类型参与运算时,先一律转换成int类型再进行运算。
逻辑运算
逻辑运算建立在关系运算的基础之上,逻辑云孙符包括:与(&&),或(||)和非(!),参与逻辑运算的变量和表达式都是boolean类型,运算结果也为boolean类型。
与(&&):只有两个变量均为true时,结果才为true,否则结果为false;
或(||):只有两个变量均为false时,结果才为false ,f否则结果为true;
非(!):运算的值与该变量相反,变量为true时结果为false,变量为false时结果为true;
关于“短路逻辑”的问题
Java逻辑运算遵循“短路逻辑”的原则:
对于“&&”,当第一个数为false时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是false;
对于"||",当第一个操作数为true 时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的结果一定是true.