【连载】corejava 第二天
Java基础第二天
1 . Java数据类型:引用类型和基本数据类型
1)
基本数据类型:8种
byte
short int long float double char boolean(熟记)
2)
引用类型很多,一个类名就是一个引用类型
3) byte
8位补码
最大值 0x7f 127 最小值 0x80
-128
short 16位有符号数 0x7fff
32767 0x8000 -32768
int
32位
0x7fffffff 2G-1
2^31-1 21亿 0x80000000
-2G
long 64位 ....
0x7fffffffffffffff
当然
没必要去记它,用多了就熟练了,不用刻意去记
多练。
4)代码示例:
01 |
byte
a= 127 ; //因为没超过byte的范围所以不会报错。其实底层是把127作为一个int计算,然后再强制转换为byte的 |
02 |
//byte a1=128;超过了byte的范围,所以报错 |
03 |
byte
a2= 128 - 1 ; //还可以写表达式,只要计算后的结果不超过范围就可以 |
04 |
//byte a3=a-1; 这里为什么报错呢? 有的人会说a=127 a3=127-1没超过范围啊 |
05 |
//在前面几种情况中,表达式里没有变量,java代码编译的时候就能计算出值,就能直接判断,是否超过其范围 |
06 |
//有变量时,在底层 byte变量和short变量都会转化为int类型来进行运算 a-1这个表达式的值是int类型了,所以无法传给byte类型 |
07 |
|
08 |
//short就不说了 很少用 |
09 |
|
10 |
//float f=1.1;//在java里 小数默认为double类型的,所以无法赋值给float类型的 |
11 |
float
f1= 1 .1f; //在小数后面加个f,说明这个小数是float类型的,相当于强制转换 |
12 |
float
f2=( float ) 1.1 ; //和上面一样的 |
13 |
|
14 |
//char ch="a";//char里面只能存放一个字符,不能放字符串,而且这个字符必须存在于Unicode编码中 |
15 |
//换句话说char是存放Unicode编码的字符 |
16 |
//记得有个问题是这样的,char里面能不能存放中文 |
17 |
//能,因为Unicode中对常用的中文进行了编码 |
18 |
//但是对于一些比较少见的中文 就不能存储了。 |
19 |
//在java中""代表的是字符串,‘‘代表的是一个字符 |
20 |
char
ch= ‘你‘ ; |
21 |
|
22 |
//boolean 只能有2个值 true false |
23 |
boolean
flag= true ; //boolean flag=false;变量在取名的时候最好有意义,比如isMan,代表是不是男人,true就是男人,false就是女人) |
24 |
|
25 |
long
l=0xf80000000L; |
26 |
int
c = ( int )l; //负数 |
27 |
//为什么c是负数呢 |
28 |
// 1111 1000 0000 0000 0000 0000 0000 0000 0000 |
29 |
//因为是long类型 有8个字节 就是64位 所以前面补0 |
30 |
// 0000 0000 0000 0000 0000 0000 0000 1111 1000 0000 0000 0000 0000 0000 0000 0000 |
31 |
//然后强制转化为int类型 int 4个字节 就是32位 取得前面32位 得 |
32 |
//1000 0000 0000 0000 0000 0000 0000 0000 |
33 |
//因为int第一位是符号位,所以c为负数 |
34 |
|
35 |
float
pi = ( float ) 3.1415926535 ; //损失精度 |
36 |
|
37 |
//float 最多保留7位小数,所以输出到6为止,最后一位的后面一位会四舍五入 |
38 |
//float的精度不高,所以要保存高精度的数据 最好用double |
39 |
|
40 |
//进制转换 |
41 |
//10进制转化为2进制 |
42 |
String str1=Integer.toBinaryString( 17 ); |
43 |
//转化后得到的是一个字符串 |
44 |
|
45 |
//10进制转化为16进制 |
46 |
String str2=Integer.toHexString( 248 ); |
47 |
|
48 |
//有木有人问2进制怎么转化为10进制啊,16进制转化为10进制啊 |
49 |
int
d=Integer.valueOf( "0101" , 2 ); |
50 |
int
d2=Integer.valueOf( "ff" , 16 ); |
5)随堂练习:Long.MAX_VALUE+Long.MAX_VALUE+2
等于什么?
为什么?
先自己想下,在运行代码,看跟自己想的是不是一样。
感言:终于有当上老师的时候了,呵呵,发现当老师挺辛苦的,首先自己要把这些问题理解透彻,然后通过自己的语言表达,同时还要考虑初学者是否能听懂,如果他们不懂,我该举哪些例子呢?
是的,当老师是很辛苦。
但是,我发现,我很快乐,我很充实,我希望自己的努力没有白费,就算能帮到一个人,我也很高兴,真的。
Corejava连载第二天,加油!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。