目录
一.数据类型
数据类型分为数值类型和引用类型,
Java八大基本数值类型:
(1)整数类型:byte、short、int、long
(2)浮点数类型:float、double
(3)字符类型:char
(4)布尔类型:boolean引用类型String 数组 类 接口 枚举
1.数值类型
1.整数
//整数
byte a = 10;
int b = 20;
short c = 30;
long d = 40L;//long类型要在数字后面加一个L
2.浮点数
//浮点数
float e = 50.1F;//float类型要在数字后面加一个F
double f = 3.121212;
3.字符型
char a ='97';
char b ='B';
4.布尔类型
boolean flg= true;
boolean flg2=false;//只有两种,0是假,非0是真
System.out.println(flg);
System.out.println(flg2);
2.引用类型
//单引号里面是字符,双引号引起的若干字符,必须是String类型
//数据类型分为数值类型和引用类型,基本数值类型分为整数byte short int long
// ,浮点数float double ,字符char,布尔boolean
//引用类型String 数组 类 接口 枚举。。
String str ="hello";
System.out.println(str);
//注意问题:
System.out.println("hello"+"world");//拼接 helloworld
System.out.println("hello"+10+20);//其他数据类型和字符串使用+字符拼接,结果是字符串hello1020
System.out.println(10+20+"hello");//这种情况要注意先加法30 hello
System.out.println("hello"+(10+20));//hello30
System.out.println(10+""+20+"hello");//1020hello
System.out.println("a="+10+",b="+20);
二.运算符,常量,变量
1.转义字符
String s1 ="bit";
System.out.println(s1);
String s2 ="\"bit\"";//打印"bit"
String s3 ="\\\\bit\\\\";//打印\\bit\\
System.out.println(s2);
System.out.println(s3);
2.变量
变量分为成员变量和局部变量,没有全局变量,成员变量分为静态成员变量和普通成员变量,变量的命名,字母,数字,下划线,美元符号,使用小驼峰命名,小驼峰两个字母一个大写一个小写,大驼峰两个字母都是大写,成员变量定义在类的内部,方法的外部public static void main3(String[] args) {//类内 int m1 = 10; int m_1 = 10; int m$1 = 10; { int a = 10;//局部变量 int b = 15; System.out.println(b); } int a = 20;//成员变量 System.out.println(a); }
3.常量
常量:在程序运行当中不能修改 1.字面值常量 2.final修饰的变量-》常量 final int a = 10; a = 99;//会报错 无法为最终变量a分配值 在程序运行的过程中,不可以修改 在程序编译的时候,就已经确定值了 变量名是大小写铭感的,即num和Num是不同的变量 最好不使用美元符号作变量
final int A = 10;
final int SIZE;
SIZE = 99;//只能初始化一次
4.强制类型转换
int转换为String String str1 = num+""; String Str2 = String.valueof(num); String转换为int
int num = 10;
String ret =String.valueOf(num);
System.out.println(ret);
String ret2 = num+"";
System.out.println(ret2);
String str = "123";
int ret = Integer.valueOf(str);
System.out.println(ret+1);//整数转字符串
//int->Integer
//char->Character
//其他的都是大写首字母即可
int a = 10;
long b = a;
System.out.println(b);
// long l = 1111111112L;
// int d = int(l);//强制类型转换
/*int a = 10;
boolean b = (boolean) a;
boolean c = true;
int d = (int)c;//int 转换不了boolean型
*/
byte a = 1;
byte b = 2;
byte c = (byte)(a+b);//强制类型转换
System.out.println(c);
int i1 = 10;
long l1 = 20;
int i2 = (int)(i1+l1);//强制转换,为了提高效率,计算机的CPU按照4个字节读取,一般把byte提升为int
System.out.println(i2);
5.运算符
除法求余 (+ - * /)
int a = 10;
int b = 2;
int c = 1;
System.out.println(a/b);//输出5
System.out.println(c/b);//输出0
System.out.println(10%3);//求余数1
System.out.println(11.5%2);//1.5
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
System.out.println("Fasfasfasfas");
6.自增自减
前置++:先++,后使用
后置++:先使用,后++
前置--:先--,后使用
后置--:先使用,后--
//自增自减
int a = 10;
int i1 =a++;//先使用,后++
a++;
System.out.println(a);//12
System.out.println(i1);//10
int c =10;
int i2 = ++c;//先++,后使用
c++;
System.out.println(c);//12
System.out.println(i2);//11
//a-- 先使用,后--
//--a 先--,后使用
7.关系运算符
使用关系运算符的结果是布尔boolean值,真或假0
int a = 10;
int b = 20;
System.out.println(a == b);//false
System.out.println(a != b);//true
System.out.println(a < b);//true
System.out.println(a > b);//false
System.out.println(a <= b);//true
System.out.println(a >= b);//false
8.逻辑运算符
[表达式1&&表达式2]两个表达式都是布尔表达式 短路:如果表达式1为假,就不执行表达式2 只要一个表达式为真,整个表达式就为真 短路:如果表达式1 为真 就不执行表达式2了 !布尔表达式 !false = true
int a =10;
int b = 20;
int c = 30;
//逻辑与
System.out.println(a < b && b < c);//true
System.out.println(a < b && b > c);//false
//逻辑或
System.out.println(a < b || b < c);//true
//逻辑非
// System.out.println(!a < b);报错
System.out.println(!(a < b));//是布尔表达式false
//短路
System.out.println(a > b && a / 0 == 0);
//前面的布尔表达式已经是一个错误的false,不会执行后面
System.out.println(a < b && a / 0 == 0);
//发生报错,第一个表达式正确,第二个本身不正确,会报错false
System.out.println(a < b && a / 2 == 5);//true
9.位运算符
三种位运算符 & | ^
//按位与 & 对应比特位全1为1
System.out.println(a & b);//0
//按位或 | 对应比特位有1为1
System.out.println(a | b);//30
//按位异或 ^ 对应比特位同为0 不同为1,找不同
System.out.println(a ^ b);//30
//按位取反 ~ 0变成1 1变成0
int c = 0xf;
System.out.printf("%x\n",~c);//fffffff0
10.移位运算符
移位运算符三个 << >> >>> 左移 << 0000 1011 << ->0001 0110 22 11*2^1 0000 1011 << ->0010 1100 44 11*2^2 右移 >> 0000 1011 >>1 ->0000 0101 5 11/2^1 0000 1011 >>2 ->0000 0010 2 11/2^2无符号右移 >>> 1111 1111 >>> ->0111 1111
int a = 12;
System.out.printf("%x\n",a << 1);//左移 右侧补0 18
System.out.printf("%x\n",a >> 1);//右移6
System.out.printf("%x\n",a >>> 1);//无符号右移6
11.三目运算符
表达式1 ? 表达式2 :表达式3
表达式1成立,输出表达式2,反之,输出表达式3
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println(max);//20
//优先级,据逻辑加括号即可
System.out.println((1+2)*b);//60