A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 白衣卿相 中级黑马   /  2015-7-22 21:42  /  198 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

12_强制类型转换的结果是怎么来的
推荐:以后在使用数据的时候,尽量使用该数据类型能够表示的范围。
byte b2 = (byte)130;
         数据:130默认是int类型的十进制数据。
         第一步:十进制的130转换成二进制数据(130 —— 10000010)
         第二步:130在内存中的表示形式,你做了截取
                            00000000  00000000 00000000  10000010
                            截取后的结果是:
                                     10000010  
         第三步:二进制数据是10000010
                   通过观察,发现这是一个负数。
                   补码:1 0000010
                   反码:1 0000001
                   原码:1 1111110
                   最终的结果是:11111110 ——>  -126
                  
byte b3 = (byte)300;
         二进制:
                   00000000  00000000 00000001  00101100
         截取后:
                   00101100
         通过观察,发现这是一个正数:44
13_一道关于数据类型转换的面试题
面试题:下面的语句有没有问题,如果有,请解释。
                   byteb1 = 3;
                   byteb2 = 4;
                   byteb3 = b1 + b2;
                   byteb4 = 3 + 4;
                  
                   有问题,在byte b3= b1 + b2;报错。
                   解释:
                            b1+ b2在参与运算的时候,首先会自动转换成int类型。
                            在这个时候,b1和b2其实都被提升了类型。
                            所以,他们的计算结果也应该是int类型。
                            最终,就相当于直接把int类型赋值给byte类型,所以,会有精度损失。
                           
                            byte、short、char类型的变量如果参与运算,它们的值都将被提升到int类型,它们的计算结果也将是int类型。
                            如果参与运算的是常量,编译器会先计算值,在看该值是否是左边能够表示的范围。如果是,就不报错。
14_ASCII码表的概述
问题:char —— int的数据关系是什么呢?
清记住三个字符的值:
'a'  ——  97
'A' ——  65
'0' ——  48
数字字符、英文字符和中文字符,都是我们用于交流的数据,而计算机中的数据底层是二进制的,所以它不能直接存储我们使用的这些数据。
编码表:
         就是字符及其对应的数值组成的一张表。
最常见的编码表:ASCII码表     
        
运算符:
   
算术运算符
   
赋值运算符
   
比较运算符
   
逻辑运算符
   
位运算符
   
三元运算符
   
   
  15_算术运算符
运算符:就是把变量或者常量进行连接的符号。一般是参与运算的符号。
  
算术运算符
  
  
运算符
         
运算
       
范例
       
结果
  
+
  
-
         
正号
  
负号
       
+3
  
b  = 4; -b;
       
3
  
-4
  
+
  
-
  
*
  
/
         

  

  

  

       
5+5
  
6-4
  
3*4
  
5/5
       
10
  
2
  
12
  
1
  
%
         
取模
       
5%5
       
0
  
++
  
++
         
自增(前)
  
自增(后)
       
a  = 2; b = ++a
  
a  = 2; b = a++
       
a  = 3; b = 3
  
a  = 3; b= 2
  
--
  
--
         
自减(前)
  
自减(后)
       
a  = 2; b = --a
  
a  = 2; b = a--
       
a  = 1; b = 1
  
a  = 1; b= 2
  
+
         
字符串相加
       
"He"+"llo"
       
"Hello"
/:整数相除,结果只能是整数。
   如果想要使结果为小数,那么参与运算的数据必须有一个是浮点数类型。
%:取得余数
++, --:自增自减
         单独使用:
                   放在操作数据的前面或者后面效果一致。
        
         参与运算使用:
                   放在操作数据前面,是操作数据先++,再操作;
                   放在操作数据后面,是操作数据先操作,再++;
+:的特殊用法
                  
16_赋值运算符
最基本的赋值
         inta = 10;
很多种赋值
         a+= 20;   //把左边和右边的数据相加赋值给左边。
         等价于 a = a +20;
         System.out.println(a);
                  
面试题
         shorts = 5;
         s= s + 2;  //报错
         s+= 2;
         System.out.println(s);
注意:
虽然a+=20和a=a+20效果等价,但是还是有些区别。
+=这种赋值运算符,其实隐含了强制类型转换功能。
也就是说:
         shorts = 5;
         s+= 2;
         等价于
         s= (short)(s + 2);
重点注意:
         赋值运算符的左边必须是一个变量。
         
17_比较运算符
比较运算符(关系运算符):
  
运算符
         
运算
       
范例
       
结果
  
==
         
相等于
       
4==3
       
False
  
!=
         
不等于
       
4!=3
       
True
  
<
         
小于
       
4<3
       
False
  
>
         
大于
       
4>3
       
True
  
<=
         
小于等于
       
4<=3
       
False
  
>=
         
大于等于
       
4>=3
       
True
  
Instanceof
         
检查是否是类的对象
       
"Hello"  instanceof String
       
True
注意:
         比较运算符的结果都是boolean型,也就是要么是true,要么是false。
运算符的优先级(从高到低)
  
优先级
         
描述
       
运算符
  
1
         
括号
       
()、[]
  
2
         
正负号
       
+、-
  
3
         
自增自减,非
       
++、--、!
  
4
         
乘除,取余
       
*、/、%
  
5
         
加减
       
+、-
  
6
         
移位运算
       
<<、>>、>>>
  
7
         
大小关系
       
>、>=、<、<=
  
8
         
相等关系
       
==、!=
  
9
         
按位与
       
&
  
10
         
按位异或
       
^
  
11
         
按位或
       
|
  
12
         
逻辑与
       
&&
  
13
         
逻辑或
       
||
  
14
         
条件运算
       
?:
  
15
         
赋值运算
       
=、+=、-=、*=、/=、%=
  
16
         
位赋值运算
       
&=、|=、<<=、>>=、>>>=
如果在程序中,要改变运算顺序,可以使用()。
分隔符:
“;”       表示语句结束。
空格         关键字的前后必须有空格,运算符的两端可有可无(建议有)
18_逻辑运算符基础
表达式:用运算符连接的式子(有变量、常量组成)。
                   a+b算术表达式
                   5>4比较表达式
逻辑运算符:
                   用于连接结果是布尔型表达式的运算。
                  在Java中不可以写出3<x<6,应该写成 x>3 & x <6.
  
运算符
         
运算
       
范例
       
结果
  
&
         
AND(与)
       
False  & true
       
False
  
|
         
OR(或)
       
False  | true
       
True
  
^
         
XOR(异或)
       
True  ^ false
       
True
  
!
         
Not(非)
       
!true
       
False
  
&&
         
AND(短路与)
       
False  && true
       
True
  
||
         
OR(短路或)
       
False  || true
       
true
&      与,并且         有假则假
|       或,或者         有真则真
!        非,不是(针对一个表达式)     
^       异或,              相同为假,不同为真
19_逻辑运算符加强
&&   短路与              如果前面出现了false,后面将不再执行。
||     短路或         如果前面出现了true,后面将不再执行。
开发常用:
         &&,||, !
int a = 10;
int b = 20;
boolean b1 = (++a > 10);
boolean b2 = (a++ > 10);
如果++在前面,先把a变化,后再与10进行比较。
如果++在后面,先与10进行比较,后再把a变化。
您需要登录后才可以回帖 登录 | 加入黑马