【java笔记】day04

来源:互联网 发布:软件开发标准等级 编辑:程序博客网 时间:2024/06/01 10:23

数据类型的转换

小数据类型>>>>大数据类型 自动类型转换
大数据类型>>>>小数据类型 强制类型转换
强制类型转换格式:
数据类型 变量名=(最终数据类型)值
eg:

byte=b;b=(int)2;   //bytedao int
  • 在java中,byte、short、char、类型的数据进行运算,会自动先转换成int,在运算。
  • 不同类型数据的运算,结果是取大的数据类型。
  • 另外,JDK提供了一个方法Integer.toBinaryString()可以取得十进制的二进制表现形式。

表达式

被运算符连接起来的式子叫表达式。

算数运算符(+ - * / %):

+(加法、连接符、正数):

加法:即算数加法。
连接符:“+”作为连接符使用的话,任意类型都可以和字符串连接。任意类型和字符串连接后的结果都是字符串。
eg:

System.out.println(10+1+"hello world"+11+12+13);

结果为:11hello world111213

\(做除法运算)

注意:
1.不做强制转换的时候默认int类型(取整效果)。
2.int类型除以0会在运行时出现ArithmeticException异常。除数不能为0。
3.double类型除以0,不会有异常,结果是Infinity(无穷)。

%(取模,求余数)

注意:取模结果是由被除数决定的。

System.out.println(10%3);System.out.println(10%-3);System.out.println(-10%3);System.out.println(-10%-3);

结果是:
1
1
-1
-1

自增减

自增:是操作数本身加1的过程。
格式:变量名++ 或者++变量名
区别:++在前时,先给操作数本身加1,在进行当前运算;++在后时,先进行当前运算,再给操作数加1。

特殊情况:

int i=0;i=i++;System.out.println(i);

结果是:0
原因分析:JVM会在内存中建立一块新的内存空间来存储i的值,然后i+1,JVM会把这个临时值赋给最后的表达式。避免这样写。

自减同理。

赋值运算符

“=”它不是数学中的等于,他是赋值号,是将等于号右边的赋值给左边。
“+=”举例:a+=值>>>>a=a+值
“-=”“*=”“/=”“%=”同理。

比较运算符

比较表达式的结果类型为boolean。

“>”
“<”
“>=”
“<=”
“==”
注意:
“==”运算符两边的数据是基本数据类型的话比较的是值本身。
“==”运算符两边的数据是引用数据类型的话比较的是引用的地址。

逻辑运算符

它是连接比较表达式的,结果类型是布尔类型。
“&”只有两边表达式同时为true时,结果才为true,其他都是false。
“|”只有两边表达式同时为false时,结果才为false,其他都为true。
“!”结果是表达式结果的相反。
“^”两边表达式结果不一样的时候为true,一样为false。
其他:
“&&”短路与
“||”短路或

短路与或和逻辑与或的区别

逻辑与不论左边是什么结果,程序都会执行判断右边,而短路与如果左边是false,右边不会执行判断了,其结果为false。
逻辑或同理,短路或如果左边是true,右边不会再执行判断了,结果为true。
综上,短路与或的效率高于逻辑与或,推荐使用短路与或。
示例:

int i=5;boolean j=i<4&&i++>7;System.out.println(j);System.out.println(i);

结果:
false
5
分析:由于是短路与,左边判断为false,不会再判断执行右边,i不会进行自加。

        int i = 5;        boolean e = i < 4 & i++ > 7;        System.out.println(e);        System.out.println(i);

结果:
false
6
分析:逻辑与,依然会读右边,i会自加。