Java基础篇
文章目录
一、变量
1.常用的基本类型
- 计算机的基础单位是bit(位/比特),1bit就是一个一个二进制的数,代表一个内容;比如就是‘0’或者‘1’其中的一个;
- 常用的基本类型有:
- byte:整数型,占用1个字节,即8位(00000000),是计算机文件计算的基础单位,127( 2 7 − 1 2^7 - 1 27−1)到-128( − 2 7 -2^7 −27),默认值是0;
- short:整数型,占用2个字节, 2 15 − 1 2^{15} - 1 215−1 到 − 2 15 -2^{15} −215,默认值为0;
- int: 整数型,占用4个字节, 2 31 − 1 2^{31} -1 231−1 到 − 2 31 -2^{31} −231,默认值为0;
- long: 整数型,占用8个字节, 2 63 − 1 2^{63} -1 263−1 到 − 2 63 -2^{63} −263,默认值为0L;
- float: 单精度浮点型,占用4个字节,运算是会产生误差,精确计算时不可使用,默认值是0.0f;
- double: 双精度浮点型,占用8个字节,运算是会产生误差,精确计算时不可使用,默认值是0.0;
- boolean:布尔类型,占用4个字节,只有true和false两种类型,默认值是false;
- char:字符型,占用1个字节,是采用Unicode编码格式,变现形式是char类型是指是int类型,char 数据类型可以储存任何字符;其中一下常用必须记住:
在ASCII码(Unicode中的一种)值中:
‘a’ = 97 , ‘b’ = 98;
‘A’ = 65 , ‘B’=66;
‘0’ = 48 , ‘1’ = 49;
常见ASCII码的大小规则:数字< 大写字母 < 小写字母;
最小值是 \u0000(十进制等效值为 0);
最大值是 \uffff(十进制等效值为 65535);
unicode:万国码、统一码,是世界级通用的定长(16位)字符集,包含世界上的所有符号,因为符号太多,所以有被划分为很多子集(如:ASCII码、utf-8等),Java中的char采用的是其中最最最常用的子集;
附一张unicode得范围图(了解即可,后续会详细写):
3. 声明变量及赋值
//第一种
int a , b , c;
a = 1;
b = 2;
c = 3;
//第二种
int a = 1;
int b = 2;
int c = 3;
//第三种
int a = 1 , b = 2 , c = 3;
其中char不同的是必须放在单引号(‘’)中,并且只能放一个字符
例如char a = '7';
- 基本类型从小到一次为:
byte < short < int <long < float < double < char
2.基本变量的相互转换
- 小转大自动转
- 大转小被动转,语法:(变量类型)变量名,例如
int a = 5;
long b = a;//小转大自动转换
int c = (int)b;//大专小强制转换
注意:
- 整数直接量可以直接赋值给byte,short,char,但不能超出其中类型范围;
- byte,short,char型数据参与运算时,系统会一律先将其转为int再运算;
- 基本类型证书行默认类型是int,浮点型默认类型是double,在非次类型计算过程中会优先转化为默认类型在进行计算;
二、运算符
1. 算数运算符:
- 加+ 、 减- 、 乘* 、 除 / 、 取余% 、 加加++ 、减减-- :
- %:取余/取模,余数为0即为整除
- ++/–:自增1/自减1,可在变量前也可在变量后
- 单独使用时,在前在后都一样(以分号为结尾,一句话只有a++;或++a;)
- 被使用时,在前在后不一样 a++的值为a; a–的值为a;
++a的值a+1;–a值为a-1;
//单独使用
int a = 5 , b = 5;
a++;//相当于a = a+1
++b;//相当于b = b+1
System.out.println(a);//6
System.out.println(b);//6
//被使用一
int a = 5 , b = 5;
System.out.println(a++);//5
System.out.println(++b);//6
//被使用
int a = 5 , b = 5;
int c = a++;//1)将a++的值赋给c是 5; 2)a在自增1 = 6;
int d = ++b;//1)1) 将++b赋值给d是6; 2) b自增1变为6;
System.out.println(a);//6
System.out.println(b);//6
System.out.println(c);//5
System.out.println(d);//6
2. 关系运算符:
- 小于< 、大于 > 、小于或等于<= 、大于或等于>= 、等于== 、 不等于!=
- 关系运算的结果为Boolean型;关系成立则为true,关系不成立则为false
3. 逻辑运算符:
- 与&&:短路与(并且),两边都为真则为真;
见false则false若第一个条件为false,则发生短路(后续代码不执行)
//与短路
boolean b2 = a > b && c++ > 2;
System.out.println(b2);//false
System.out.println(c);//5(因为发生与短路,&&后面的c++不执行)
- 或||:短路或(或者),有真则真,见true则true;
若第一个条件为true,则发生短路(后面的不执行了)
//或短路
boolean b3 = a < b || c ++ >2;
System.out.println(b3);//true
System.out.println(c);//输出5 , (因为发生或短路,||后面的c++不执行)
- 非!:逻辑非(取反),非真则假,非假则真
逻辑运算是建立在关系运算的基础之上的,逻辑运算的结果也是Boolean型
4. 赋值符和扩展赋值符:
- 赋值符:=
- 扩展赋值符:+=,-=,/=,*=,具有强转类型功能,此处需要十分注意!
int a = 5;
a += 10;//相当于a = a + 10
System.out.println(a);//15
//小面试题
short s = 5;
//s = s + 10 ;//编译错误,需要强转,改为:s= (short)(s + 10)
s += 10;//扩展符号+= 具有强转类型功能,相当于:s= (short)(s + 10)
5. 字符链接:+
- char:字符 , 单引号中,只能放一个;
- string:字符串,双引号中,放0-多个字符
若两边位数字则做加法运算
若两边出现了字符串,则做字符串的连接
任何类型的数据只要和字符串连接结果一定是字符串
//常规链接:输出的名字叫zhangsan,今年38了
int age = 38 ;
String name = "zhangsan";
System.out.println("我的名字叫" + name + ",今年" + age + "了");
//int类型和字符串连接,存在字符串则为字符串类型
System.out.println(30 + 20 + "" + 30);//string类型5030
System.out.println("" + 30 + 20 + 30);//string类型302030
System.out.println(30 + 20 + 30 + "");//string类型80
6. 条件运算符/三目运算符
一目:操作一个数的符号:++ 、 – 、 !
- 二目:操作两个数的符号
- 三目:条件/三目运算符,操作三个数的符号:
-
- 语法:boolean值(true/false) ? 数1 : 数2
-
- 执行过程:整个表达式是有值的,他得值要么是?号后面的数1 , 要么是:号后的数2
-
- 计算boolean的值:
-
-
- 若为true,则整个表达式的值为:号左边的数1
-
-
-
- 若为false,则整个表达式的值为:号右边的数2
-
//输出a和b的最大值
int a = 8, b = 5;
int max = a > b ? a:b;
System.out.println("max=" + max);//8
总结
- 基本数据类型有:
- 整数型:byte , short , int , long ,
- 浮点型:float , double,
- 布尔型:boolean,
- 字符型:char,
- 变量的赋值和转换,小转大自动转,大转小需要强转;
- 算数运算符:
- 加+ 、 减- 、 乘* 、 除 / 、 取余% 、 加加++ 、减减-- ;
- %:取余/取模,余数为0即为整除;
- ++/–:自增1/自减1,可在变量前也可在变量后;
- 关系运算符
- 小于< 、大于 > 、小于或等于<= 、大于或等于>= 、等于== 、 不等于!= ,结果是布尔型;
- 逻辑运算符
- &&短路或 , ||短路与 , !非
- 赋值符-具有类型强转功能:
- = , += , -= , /= , *=
- 三目运算符:布尔类型 ? 值1 : 值2;布尔类型为true是值1,布尔类型为false时是值2;