隐式转换
在这段代码中就发生了隐式数据类型转换,本来是byte数据类型的y因为与int x相加,byte被隐式提升为int;
int x = 3 ;
byte y = 4 ;
x = x + y ;
------------
x = 7
不同数据类型之间的运算
byte与byte(short,char)运算,会提升为int数据类型,把int赋值给byte会损失精度.
byte b1 = 3 ;
byte b2 = 4 ;
byte b3 = b1 + b2 ; //报错,因为b1 + b2过程中会升到int数据类型,不可以赋值给byte类型的b3;
byte b4 = 4 + 3 ; //正常,并不会报错;
System.out.println ( 'a' + 1 ) ; //会输出98是因为在ASCII码中,字符a的值为97;
---------------------------------------
98
强制转换
在值前加(byte)强制设定byte数据类型.
int x = 3 ;
byte b = 4 ;
b = (byte)(x+6) ;
System.out.println((byte)(126+4)); //-126因为byte类型范围是-128~127
字符串拼接
任何数据类型用+与字符串连接会产生新的字符串.
java用Unicode编码,用两个字节存储char,所以可以保存汉字.
System.out.println("hello"+1) ; //输出hello1
System.out.println(1+1+"hello"); //输出2hello
自增(减)
a++与++a的区别:两者都是自增,但a++是先赋值,后自增
int a = 3;
int b ;
b = a ++ //因为是先赋值,在自增.所以此时b = 3 , a = 4 ;
b = ++a //如果执行这条语句,那么b = a = 4 ;
下面一个较难的例子
int x = 4 ;
int y = (x++)+(++x)+(x*10); //4+6+60
System . out .println (y); //输出70
逻辑运算符
&与&&的区别
&&当左边为false的时候.就不会执行&&右边的式子了.这种现象也叫短路效果.但用&和用&&的效果是一样的.
同样的|与||也有短路效果.
System.out.println( 6&3) ; //&只有两者都为true(相同)才为true;
//6 =>110
//3 => 011
//6&3 => 2
同理:6|3 => 7 (有true(1)则为true)
位运算符
"^" 异或
"~ "取反
"<<"左移,左移n位则为乘以2的n次幂.
">>"右移,右移n位则为除以2的n次幂.
一个可以输入的demo
import java.util.Scanner; //导包
class test {
public static void main (String [] args){
Scanner sc = new Scanner (System . in);
System.out.println("请输入一个整数");
int a = sc. nextInt ();
}
}