一、数据类型、变量与常量
1、数据类型:
java中每种数据类型都有其固定的大小,所以其表值范围也是固定的
- 基本数据类型:
- 数值型:整型和浮点型,整型包括byte/short/int/long,浮点型包括float/double
- 字符型
- 布尔型
-
- 引用型:数组
2、各种数据类型的注意点
类型 | 细分类以及其大小 | 需要注意的地方 |
---|
整型 | byte(1字节)short(2字节)int(4字节)long(8字节) |
- 使用的是补码的形式,最高位是1的表示的是负数,相反数为加1
- 在声明的时候默认的是int,所以要申明为long,在数字的后面要加上'l'或者'L',也为long a = 123l;
|
浮点型 | float:4字节,范围为-3.403E38~3.403E38 double:8字节范围为-1.798E308~1.798E38 |
- 声明的时候默认的是double的,并且在声明的时候是要很注意的,一不小心就会有数据类型的自动转换,例如:
- float x = 1;此时会认为右边的是int类型的数据,因为float比int等级高,所以自动进行转换,将 右边的int转换成了float类型的数据,因此不会报错,但是此时x的类型是float
- float x = 1.0;此时认为右边是浮点型,而默认是的double,但是double不能转化为float,所以会报错
- 在声明float数据的时候,需要加上"f"或者"F"
|
字符型 | char:2字节,这与C++中不同,C++中char是1字节数据 |
|
布尔类型 | boolean:1字节 | 取值有true和false两种 |
2、变量
Java中变量是以数字、字母和下划线组成的,并且可以以字母和下划线开头,但是不能以数字开头;
java是大小写敏感的语言
3、常量
浮点型常量有两种表示方法,十进制表示方法必须有小数点,也就是说.345是正确的;科学计数法,使用E来表示次数
可以将int常量赋给byte/short/char,只要不超过期表值范围,那么值就是相应的二进制位数转化为具体的类型的值,其实也就是十进制代表的值
二、运算符与表达式
1、运算符
a、逻辑运算符
- 逻辑运算符的操作数的类型是布尔型
- &、|:不管第一个操作是true或者false,都要将整个表达式计算完成
- &&与||是短路运算符,也就是值计算到确定结果就停止,不用将所有的操作数的结果都求出,具体为&&如果第一个 操作数是false,那么就返回false,不再进行计算;如果是||,第一个操作数是true,那么就返回true,不再对第二个 操作数进行求解
b、位运算符
- 位运算符的操作数的类型为整型和字符型,注意浮点型是不能进行位操作的
- >>带符号右移、>>>无符号右移,<<左移运算
- 对short、byte、char进行移位运算,会先将值扩展为32位,也就是说,如果是short和byte的话,具体的方法是在多出的位 上面补充符号位,char直接添0作为扩充,之后其移位运算就按照int的规则进行计算
- int移位n位,那么其实是int移位n%32
- long移位n为,那么其实是long移位n%64
c、赋值运算符
在不同类型之间赋值的时候要经过类型转换,但是特殊的是:
将int常量赋给bute/short/char等类型 变量的时候,不会进行类型转换,只要不超出其表示的范围即可,因为没有进行类型转化,所以只要是在其值的范围内,那么其值就是 int的值,否则就会报错。例如:
- byte x = 127://OK,在byte的范围内
- byte x = 128://报错,将int转化为byte,为不兼容的类型转换
- 注意以上的是默认的可以的,也就是不进行类型转换,但是如果是强制进行类型转化,结果就不同了,例如:
- byte x = (byte)128;//x=-128
- byte x = (byte)255;//x=-1
- byte x = (byte)256;//x=0
- 也就是说,如果是强制类型转换,那么就看二进制的表示,其会将int的32位二进制进行截断并转化为 相应类型的值,例如上面的例子中会截下二进制数的低8位,然后再将这8为按照byte的规则转化为十进制的值,其就为最后的值。
2、表达式
表达式的值和表达式的类型:表达式的值就是计算出来的值,表达式的类型为计算出来的值的类型。
三、数组
- java支持锯齿状的数组
- Java在数组声明的时候,不能写明数字维数
- java在声明的时候,要从高维开始
四、变量和引用
java中基本类型(数值型、字符型、布尔型)在传递的时候是值传递,但是像数组这类的引用型则是传引用,也就是地址。