整数类型: byte(1字节) short( 2字节) int(默认类型 4字节) long(8字节)
1字节 = 8位 1byte = 8bit
//byte : 取值范围-128~127
byte b = 127;
//byte b1 = 128;//溢出
//short
short s = 1234;
//int
int i = 1234567;
//long:需要在末尾加上小写L或者小写l
long l = 1238737443874L; //0-9 十进制,不能以0开头
long l1 = 0XA223B3L; //0-9 A-F(代表10-15) 十六进制 ,以0x或0X开头
long l2 = 01734L; //0-7 八进制,以0开头
浮点型: float(4字节) double(默认类型 8字节)
//float 单精度
float f = 1234.56f;//末尾加上大写L或者小写l修饰
//double 双精度(默认类型)
double d = 12345.56;
字符类型:char(2字节)
单引号”括起来,字符串String用双引号”“括起来
char c = 'a';
char c1 = '3';
char c2 = '中';
char c3 = 97; //a ascii码 a-z:97-122 A-Z:65-90
char c4 ='\n'; //换行 转义字符
char c5 ='\u1330' ; //j unicode编码
System.out.println(c);
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println("'happy \\ \n \"birthday\" '");
布尔类型:true false
boolean b1 = true;
boolean b2 = false;
数据类型隐式转换(自动转换):
小 -> 大
特殊:long -> float
注意:byte short char类型之间不互相转换,计算时,默认转换为int类型做计算
//int -> float
int num = 1234;
float fnum = num;//int类型隐式转换为float
System.out.println("num:" + num); //1234
System.out.println("fnum:" + fnum);//1234.0
//long->float
long l = 1234l;
float f = l;
//byte类型计算
byte b = 123;
byte c = 12;
int sum = b + c; //byte默认转换为int类型之后做计算
byte sum2 = (byte)(b+c);//强制转换
数据类型强制转换(手动转换):
转换风险:1. 数字溢出 2.失去精度
//long -> short
long l1 = 1234567890123456L; //long
short s = (short)l1; //short
System.out.println("long:" + l1);//1234567890123456L
System.out.println("short:" + s + " " + Short.MAX_VALUE + " " + Short.MIN_VALUE );//-17728
// + 算数运算 与 字符串拼接
int num = 1;
int num2 = 2;
System.out.println(num + num2);//3
System.out.println(num + num2 + "AB");//3AB
System.out.println("AB" + num+ num2);//AB12
// / 除法运算: 若是两个整数相除,只保留整数部分;
int num3 = 10;
int num4 = 3;
int result = num3/num4;
System.out.println(result);// 3
float f = 10;
float f2 = 3;
float result2 = f/f2;
System.out.println(result2);// 3.3333333
//% 取余(取模):被模数为正数结果都为正,被模数为负数结果都为负
System.out.println(5%2); //1
System.out.println(5%-2); //1
System.out.println(-5%2); //-1
System.out.println(-5%-2); //-1
// ++ 自增 : ++num ,先加1,再计算 num++,先计算,再加1
int num5 = 4;
System.out.println(num5++);//4
System.out.println(num5); //5
// -- 自减 : --num ,先减1,再计算 num--,先计算,再减1
int num6 = 4;
System.out.println(--num6);//3
System.out.println(num6); //3
/**
* 赋值运算符
*/
int x = 10;
int y = 20;
x += y; //等同于 x = x + y
System.out.println(x); //30
x -=y; //等同于 x = x - y
System.out.println(x); //10
x *= y; //等同于 x = x * y
System.out.println(x); //200
x /= y; //等同于 x = x / y
System.out.println(x); //10
/**
* 关系运算符: "=="不要写成"="
* "!=" 不要写成"<>"
*/
// == 判断是否相等,返回boolean值
int num7 = 10;
int num8 = 20;
System.out.println(num7 = num8); //20
System.out.println(num7 == num8);//true
// != 判断是否不等,返回boolean值
System.out.println( 5 != 3);//true
//System.out.println( 5 <> 3);//语法错误 SQL语法中的比较运算符
//逻辑与 && :所有表达式均满足条件,返回true,否则返回false
System.out.println(true && true);//true
System.out.println(false && true);//false 短路运算
System.out.println(true && false);//false
System.out.println(false && false);//false 短路运算
System.out.println(true && true && false && true);//false 短路运算
//短路运算
int num9 = 8;
boolean result3 = ((num9 == 10) && (++num9 > 8));
System.out.println(result3);//false
System.out.println(num9); //8
//逻辑或 || :任意表达式返回true,结果即为true,如果所有表达式返回false,结果才为false
System.out.println(true || true);//true
System.out.println(false || true);//true
System.out.println(true || false);//true
System.out.println(false || false);//false
//逻辑非 !:对现有的结果取反
System.out.println(!true);//false
System.out.println(!false);//true
/**
* 位运算符:只对byte、short、char、int、long有效
*/
//按位与 & :所有表达式均满足条件,返回true,否则返回false
System.out.println(true & true); //true
System.out.println(false & true); //false 非短路运算
System.out.println(true & false); //false 非短路运算
System.out.println(false & false);//false 非短路运算
//1代表true 0 代表false
System.out.println(1 & 1);//true 1
System.out.println(0 & 1);//false 0 非短路运算
System.out.println(1 & 0);//false 0 非短路运算
System.out.println(0 & 0);//false 0 非短路运算
//非短路运算
int num10 = 8;
boolean result4 = ((num10 == 10) & (++num10 > 8));// false true
System.out.println(result4); //false
System.out.println(num10); //9
//按位或 | :只要任意一个表达式满足条件,返回true,如果所有表达式均不满足条件,返回false
System.out.println(true | true); //true
System.out.println(false | true); //true 非短路运算
System.out.println(true | false); //true 非短路运算
System.out.println(false | false);//false 非短路运算
//1代表true 0 代表false
System.out.println(1 | 1);// 1
System.out.println(0 | 1);// 1 非短路运算
System.out.println(1 | 0);// 1 非短路运算
System.out.println(0 | 0);// 0 非短路运算
//异或 ^ :两者不一致返回true,否则返回false
System.out.println( true ^ true); //false
System.out.println( true ^ false); //true
System.out.println( false ^ true); //true
System.out.println( false ^ false); //false
//1代表true 0 代表false
System.out.println( 1 ^ 1); //false 0
System.out.println( 1 ^ 0); //true 1
System.out.println( 0 ^ 1); //true 1
System.out.println( 0 ^ 0); //false 0
/*
* 位运算
*/
System.out.println( 4 & 3); //0
System.out.println( 4 | 3); //7
System.out.println( 4 ^ 3); //7
//4 0100
//3 0011
//& 0000 | 0111 ^ 0111
注意:
逻辑运算符 与 位运算符的区别:
相同点:都可以做逻辑运算
不同点:
① 逻辑运算符用两个字符表示,例如 && 、||
位运算符用一个字符表示,例如&、|
② 逻辑运算符做短路运算,效率较高
位运算符做非短路运算
③ 位运算符可以做按位运算,逻辑运算不可
// << 左移 (以二进制值进行移位操作) : 左边移除部分直接丢弃,右边空出位置补0
int num11 = 3;
System.out.println(Integer.toBinaryString(num11));//0011
System.out.println(num11 << 1); //6
//3 00000011
//6 00000110
// >> 右移 :右边移除部分直接丢弃,左边空出位置,最高位如果为0(0代表正数),则补0,若果为1(1代表负数),则补1
int num12 = 6;
System.out.println(Integer.toBinaryString(num12));//0110
System.out.println(num12 >> 2);//1
//6 00000110
//1 00000001
// >>> 无符号右移
int num14 = -8;
System.out.println(Integer.toBinaryString(num14));//11111111111111111111111111111000
System.out.println(num13 >>> 3);//536870911
/**
* 三元运算符(包含三个表达式):
* 表达式1 ?表达式2 :表达式3
*/
int num15 = 3;
System.out.println((num15 >= 10) ? "是" : "否");//否
//二元运算符(包含二个表达式)
int z = x+y;
//一元运算符(包含一个表达式)
++num15;