黑马程序员技术交流社区
标题: 【学习笔记】变量、常量 [打印本页]
作者: 辉Se天空 时间: 2014-11-17 22:07
标题: 【学习笔记】变量、常量
本帖最后由 辉Se天空 于 2014-11-17 22:40 编辑
一.常量与变量
1. 常量
l 概念:常量表示不能改变的数值。
Java中常量的分类:
1,整数常量。所有整数
2,小数常量。所有小数
3,布尔型常量。较为特有,只有两个数值。true false。
4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
5,字符串常量。将一个或者多个字符用双引号标识。
6,null常量。只有一个数值就是:null.
l 对于整数,java有三种表现形式:•十进制:0-9,满10进1.•八进制:0-7,满8进1.用0开头表示。•十六进制:0-9, A-F,满16进1.用0x开头表示。
注意:java中没有二进制。
l 进制转换:
注意:负数的二进制表现形式对应的正数二进制取反加1
例:-7的二进制表示:
首先7在PC内存中表示形式为:
00000000000000000000000000000111
取反得
11111111111111111111111111111000
加一得:
11111111111111111111111111111001
如果要计算负数的16进制和8进制可先计算负数二进制,然后转化为16进制和8进制。
2. 变量
l 变量的概念:•内存中的一个存储区域•该区域有自己的名称(变量名)和类型(数据类•该区域的数据可以在同一类型范围内不断变化
l 为什么要定义变量:•用来不断的存放同一类型的常量,并可以重复使用
l 使用变量注意:•变量的作用范围(一对{}之间有效)•初始化值
l 定义变量的格式:•数据类型 变量名=初始化值;
l 数据类型:
注意: 整数默认:int小数默认:double
拓展:
占用位数:
主类型 大小
boolean 1位 - -
char 16位
byte 8位
short 16位
int 32 位
long 64位
float 32位
double 64位
通过以下代码课的出各类型的最大值和最小值
- public classTestOutOfBound {
- public static void main(String[] args) {
- System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE));//内存溢出
- System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的20亿左右,用在钱上面不一定够
- System.out.println(Integer.MIN_VALUE); //负的2的31次方
- System.out.println(Long.MAX_VALUE); //2的64次方-1,19个数位,很大了,可放心用在钱上面
- System.out.println(Long.MIN_VALUE); //负的2的64次方
- System.out.println(Float.MAX_VALUE); //2的128次方-1,38个数位,比long多了一倍,这个主要用来做简单数学精确运算使用
- System.out.println(Float.MIN_VALUE); //2的-149次方
- System.out.println(Double.MAX_VALUE); //2的1024次方-1,308个数位,是float数位的10倍,主要用来做复杂运算和天文运算
- System.out.println(Double.MIN_VALUE); //2的-1074次方
- }
- }
复制代码
结果
-2
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324
(引用自博客http://nannan408.iteye.com/blog/1255315/)
l 强制类型转化
格式:(想要转化的类型)原类型
例:(char)(2)把2(int型)转化为char型
注意:
如果将一个类型强制转化成另一个类型,而又超出了目标类型的范围则结果会截断成完全不同的值(char)300结果为44.
l 表达式的数据类型自动提升
•所有的byte型、short型和char的值将被提升到int型。
•如果一个操作数是long型,计算结果就是long型;
•如果一个操作数是float型,计算结果就是float型;
•如果一个操作数是double型,计算结果就是double型。
l 常见问题:
(引用自黑马程序员论坛就业指导-许瑞航老师)
问题一:
[img]file:///C:/Users/huihui/Desktop/java/Java%E5%9F%BA%E7%A1%80%E7%AC%AC%E4%BA%8C%E5%A4%A9/02-Java%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95%EF%BC%88Part%201%EF%BC%89_files/Image%20[6].png[/img]
错误原因:
由于整数默认类型是int类型,如果数值超过了int类型的范围,那么就会报出如上错误。
即使是赋值给long类型的变量,但是后面的常量已经超过了int类型的范围,同样会报错。
解决方法:
在数值后面加上一个“l”,就可以让编译器知道后面的常量是long类型的。
作者: 辉Se天空 时间: 2014-11-17 22:09
问题二:
错误原因:
由于小数默认是double(8byte)类型,赋值给float(4byte)类型的变量,当然可能会损失精度。
解决方法:
在数值后面加上一个“f”,就可以让编译器知道后面的常量是float类型的。
问题三:
错误原因:
由于变量y是未初始化的,所以不能直接操作。
解决方法:
一定要为变量y先赋值,再打印输出。
问题四:
错误原因:
由于变量z的作用范围是在一对{}之间有效,超出这个范围就失效了。所以,找不到z这个符号。
解决方法:
将大括号去掉,或者在大括号里面打印变量z。
本人java新人,有疏忽和错误、误之处欢迎大家指出
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |