黑马程序员_Java基础_02

                                        ---------android培训java培训、期待与您交流! ----------


导读:关键字、常量、变量、类型转换、转义符、运算符


1、关键字

  • 关键字所有字母都为小写
  • main不为关键字,但确实为虚拟机所识别


2、常量和进制

  • java6种常量中有二个特殊的常量boolen常量(有两个值true和false)和null常量(只有一个值null)
  • 从二进制到十六进制会越来越短


3、变量:

(1)定义:

变量就是将不确定的数据进行存储,也就是需要在内存中开辟出一个空间。如何开辟内存空间呢,就是通过明确数据类型、变量名称、数据来完成

(2)什么时候定义变量?

当数据确定的时候,需要对数据进行存储的时候就定义一个变量,来完成存储动作。

(3)java基本数据类型

java语言是一个强类型的语言,对每一种数据都定义了明确的具体的类型,在内存中分配了不同大小的空间

java中凡是写整型默认类型都为int。

java中小数默认都是double型。例:float f = 2.3;(错误)   float f = 2.3f;(正确)

char c = ' ';  long l = 6L;   byte b = 2; (-128~127)  boolean b = true;

(4)其他

cpu中的内存我们称之为缓存。在买一些设备的时候要考虑一些缓存的情况。

变量除了可以存储数据块外还可以被重用


4、类型转换

(1)自动转换(隐式转换)

例:A. byte b = 3;  b = b + 2; 

会出现精度的损失。因为2默认是一个整型的数占4个byte,经过自动类型提升(以小的为主,小的向大的提升,计算机机底层自动帮你完成),b+2变为4个byte,再赋值给一个byte就会报错。

例:B.System.out.println('a'+1);  输出结果98

(2)强制转换(显式转换)

例:A. b = (byte)(b+2)

进行强制类型转换就不会出错

例:B. System.out.println((char)('a'+1));  输出结果b.

P.S. : 在ASCII中a为97,A为65,字符‘1’代表49.


5、算术运算符

int x = 4027;  x = x / 1000 *1000;将最高位留下,将后面的东西舍弃。

1 % -5 ==1;  -1 % 5 == -1它的结果只看被余数即作数左边的。

int b;  b = b + 4; 不能运算,因为在开始的时候b没有赋值。 

+:即可以做加法运算,还可以做字符串连接。字符串和任何数据使用+都是相连接最后结果是字符串

例:System.out.println("a + b = " + 5 + 5); 结果为a + b = 55

       System.out.println("a + b = " + (5 + 5)); 结果为a + b = 10    运用小括号提高的优先级


6、转义运算符

定义:通过\ 来转变后面字母或者符号的含义

\n:换行 \b:退格。相当于backspace。 \r:按下回车键。window系统,回车符是由两个字符来表示\r\n.

\t:制表符。相当于tab键

例:System.out.println("\"hello\"");输出一个带有双引号的"hello".

System.out.println("\\hello\\");

char ch = '\''; 

char ch = '你' ;


7、赋值运算符和比较运算符

=  += -= *=  /=  %=

例:short s = 4; s = s + 5; 和short s = 4; s += 5;有什么区别?

第一个会出错,第二个不会出错,因为第一个相当于进行了二次的运算,s自动提升为4个字节然后赋给s。而第二个只相当于进行了一次赋值运算

  ==     !=     <>     <=     >= 

运算结果都为boolean型,要么为true要么为false


8、逻辑运算符

定义:逻辑运算符用于连接boolean类型的表达式

&  |     ^     !  &&     ||

^: 异或 ;就是和 | 有点不一样。当true ^ true = false;(两边相同结果为假,两边不同结果为真)

&和&&特点:

&:无论左边是true是false。右边都运算。 &&:当左边为false时,不运算。

&&比&运算效率会高那么一点。如果&&前面的那个数错误的话,后面的那个就不运算了,因为结果一定为假

例:int a = 2; a>3 && a<6;  只运算a>3

|和||的特点:

|:两边都参与运算。 ||:当左边为true.右边不运算。


9、位运算

<<  >>     >>>     &     |     ^     ~(取反)

一个数往左移越来越大(乘以2的左移的位数次幂),一个数往右移越来越小(除以2的右移的位数次幂)。

做运算的时候位运算是最快的,但有一个局限性,都必须是2的倍数。

练习1:最有效率的方式算出2*8等于几?2<<3;

>> : 最高位补什么由原有数据的最高位值而定,右移后,最高位是1就补1,如果最高位是0就补0 

     (带符号右移,负数右移结果还是负数)

>>> : 无论最高位是什么,右移后,都用0补

^ : 一个数异或同一个数两次,结果还是那个数。例:7 ^ 4 ^ 4 = 7;  可用于加密解密。

练习2对两个整数的值进行互换(三种方法)

(1)运用第三方变量(开发中最常用的方法,可读性最强)

    int temp = n;

    n = m;

    m = n;

(2)不运用第三方变量(如果n和m的值非常大,容易超出int范围)

    n = n + m;

    m = n - m;

    n = n - m;

(3)不运用第三方变量(一种有技巧的方法,但在开发中不常用)

    n = n ^ m;

    m = n ^ m; //(n ^ m) ^ m

    n = n ^ m; //n ^ (n ^ m)

    记法:右边都是n ^ m ,左边是nmn

练习3:60的十六进制的获取?    

60 & 15 = 12;(60的二进制先和15的二进制相&,即和低四为1高四位为0的二进制相与)

temp = 60 >>> 4;(上一步运算完成后将60的二进制右移四位)

            (要写成>>>的右移,正数的话都一样,负数的话>>移不完)

temp & 15 = 3;   (上一步的右移四位完成后,再和15的二进制相与)

将12和3分别转化为相应的字母:(char)(12 - 10 + 'A')  ,得到C 3,再倒过来得到60的十六进制3C

玩十六进制的时候低四位获取,玩八进制低三位获取,玩四进制低二位获取,玩二进制低一位获取。


10、三目运算符:

要判断是否大于9,做相应的处理。int n2 = temp & 15;n2 > 9 ? (char)(12 - 10 + 'A') : n2; ( : 运算这里有强转)



                                        ---------android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值