代码改变世界

【连载】corejava 第二天

2014-04-03 14:26  Nicole丶  阅读(129)  评论(0编辑  收藏  举报

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连载第二天,加油!