- 概念:常量表示不能改变的数值。
Java中常量的分类:
1.整数常量:所有整数
2.小数常量:所有小数
3.布尔型常量:较为特有,只有两个数值:true 、false。
6.null 常量:只有一个数值就是 :null.
-
对于整数,java有三种表现形式:
十进制:0-9,满10进1.
八进制:0-7,满8进1.用0开头表示。
十六进制:0-9, A-F,满16进1.用0x开头表示。
-
进制转换:
注意:负数的二进制表现形式
对应的正数二进制取反加1
例:-7的二进制表示:
首先7在PC内存中表示形式为:
00000000000000000000000000000111
取反得
11111111111111111111111111111000
加一得:
11111111111111111111111111111001
如果要计算负数的16进制和8进制可先计算负数二进制,然后转化为16进制和8进制。
2.变量
-
变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
-
为什么要定义变量:
用来不断的存放同一类型的常量,并可以重复使用
-
使用变量注意:
变量的作用范围(一对{}之间有效)
初始化值
-
定义变量的格式:
数据类型 变量名=初始化值;
-
数据类型
注意:整数默认:int小数默认:double
拓展:
占用位数:
主类型 大小
boolean 1位
char 16位
byte 8位
short 16位
int 32 位
long 64位
float 32位
double 64位
通过以下代码课的出各类型的最大值和最小值
结果
-2
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324
(引用自博客http://nannan408.iteye.com/blog/1255315/)
- 强制类型转化
格式:(想要转化的类型)原类型
例:(char)(2)把2(int型)转化为char型
注意:
如果将一个类型强制转化成另一个类型,而又超出了目标类型的范围则结果会截断成完全不同的值(char)300结果为44.
-
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
-
常见问题:
(引用自黑马程序员论坛 就业指导-许瑞航老师)
问题一:
错误原因:
由于整数默认类型是int类型,如果数值超过了int类型的范围,那么就会报出如上错误。
即使是赋值给long类型的变量,但是后面的常量已经超过了int类型的范围,同样会报错。
解决方法:
在数值后面加上一个"l",就可以让编译器知道后面的常量是long类型的。
问题二:
错误原因:
由于小数默认是double(8byte)类型,赋值给float(4byte)类型的变量,当然可能会损失精度。
解决方法:
在数值后面加上一个"f",就可以让编译器知道后面的常量是float类型的。
问题三:
错误原因:
由于变量y是未初始化的,所以不能直接操作。
解决方法:
一定要为变量y先赋值,再打印输出。
问题四:
错误原因:
由于变量z的作用范围是在一对{}之间有效,超出这个范围就失效了。所以,找不到z这个符号。
解决方法:
将大括号去掉,或者在大括号里面打印变量z。
二. 运算符1. 算术运算符

2.赋值运算符
符号:= , +=, -=, *=, /=, %=
注意:
1. +=, -=, *=, /=, %=均为一个符号
2.+=用法
short s = 3;
s=s+2;//错误2为int型相加还是int型
s+=2;//正确,运算有自动转化为s的类型
注意:
运算之后为boolean型
例:1<3 结果为ture
注意:
&和&&区别:
&:无论左边是ture或false右边都会运算。
&&:左边为false时,右边不会运算。
&可以是两个相等同类型的数相与。
&&只能是boolean类型的两数相与。
(||和|也是一样)
注意:
取反~:~6为0000….0110取反得1111…1001
因为为int型首位为1则为负数,负数二进制转化为十进制方法为减一(1111…1000)后取反(0000…0111)结果为-7
技巧:不另外定义变量交换m,n的值
方法1:n=n+m;m=n-m;n=n-m
方法2:n=n^m;m=n^m;n=n^m
6.三元运算符 (条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后是结果表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数