1. Java数据类型
1.1.基本数据类型分类
- 分2大类:基本数据类型和引用数据数据
- 除了基本数据类型之外 其他都是引用类型
- 4类8种
- 整型(整数) 浮点型(小数) 字符型(char) 布尔类型()
| 数据类型名 | 占用字节数 | 表数范围 |
|---|---|---|
| byte | 1个字节 | -2^7 到2^7-1 |
| short | 2 | -2^15 到2^15-1 |
| int | 4 | -2^31 到2^31-1 |
| long | 8 | -2^63 到2^63-1 |
| float | 4 | |
| double | 8 | |
| char | 2 | |
| boolean | 1个bit | true,false |
1.1.1 整型(整数,byte 1 short 2 int 4 long 8)
整数默认是int类型,赋值给long类型的变量 需要在数值后面加 L
* 字节B byte 内存单位 1GB =1024MB 1MB =1024KB 1KB = 1024B(字节) 1B=8 bit(位)
* 整型(整数,byte 1 short 2 int 4 long 8)
public static void method1() {
// 占用字节个数不一样,byte 1个字节
byte a = -128;
short b = 12;
int c = 2147483647;
long d = 2147483648L;
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
1.1.2 浮点型(float double)
- float 单精度 4个字节
- double 双精度 8个字节
/**
* 浮点型(小数)
* float 单精度 4个字节
* double 双精度 8个字节
*/
public static void method2() {
// 浮点型默认是double类型 ,要在数值后面加F/f
float f1 = 5.4f;
double d1 = 6.66666;
System.out.println(Float.MIN_VALUE);
System.out.println(Float.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
}
1.1.3 字符型
/**
* char 字符类型
* 使用单引号 只能是一个符号
*/
public static void method3() {
//字符 符号 使用单引号 只能是一个符号
char ch = 'a';
// unicode字符编码
char ch2 = '\u003C';
char ch3 = '<';
System.out.println(ch2);
}
1.1.4 布尔类型
只有2个值 true 和false
public static void method4() {
boolean b1 = true;
boolean b2 = false;
}
1.1.5 扩展
* 字符串类型 String
* 赋值使用 双引号
private static void method5() {
System.out.println('c');
//String字符串类型 ,赋值的时候使用双引号;字符个数可以是0或多个
String str = "abc";
char ch = 'a';
// + 两侧如果一旦出现字符串,拼接字符串的作用
System.out.println("中国" + "富强");
System.out.println("中国" + 666); //“中国666”
System.out.println(str + ch);
}
1.2 变量
- 变量:运行过程中,其值可以进行变化的量
- 使用变量之前,一定要先声明再赋
标识符:凡是自己起的名字都是标识符(类名,方法名,变量名)
- 由 英文符号,数字符号,$, _下划线 组成
- 数字符号不能打头
- 不能和关键字(内定好的单词,有特殊用途)重名
- 驼峰标志(变量名和方法名首字母小写,类名首字母大写);第二个单词首字母大写其余单词小写
public static void method6() {
// 声明变量: 数据类型 变量名;
int a;
// 2 给变量 赋值
a = 22;
//访问变量 就是使用
System.out.println(a + 10);
//声明后直接赋值
int b = 20;
a = 30;
float weight = 12.4F;
}
1.3 基本数据类型转换
-
boolean不参与转化
-
自动转换
- 表数范围小的可以自动转换为表数范围大数据类型
- byte->short->char->int ->long ->float->double
-
强制转换(会有数据溢出的风险)
- 表数范围大的需要强制转换为表数范围小数据类型
- 需要强制转换符(数据类型)
- 在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零
* 强制转换 格式:(type)variableName
private static void method7() {
//强制转换符 ()
long lo1 = (long) 3.6F; //将3.6F强制转换为long类型,赋值给lo1
System.out.println(lo1);
byte by = (byte) 130;
System.out.println(by);//-126
}
* 自动转换
private static void method8() {
char ch1 = 'A';//'a' -> 97 'A'->65
// 自动转换
System.out.println(ch1 + 10);
//自动转换
double d1 = 10; //10.0
System.out.println(d1);
}
2. Java运算符
public class Exercise2 {
public static void main(String[] args) {
method1();
method2();
method3();
method4();
method5();
method6();
method7();
method8();
method9();
}
2.1 赋值运算符
public static void method1() {
int a = 10;
int b = 12;
// 等号 右边的值 赋值给等号 左边的变量
a = b;
System.out.println(a);
}
2.2 算术运算符 (+ , - ,*, /,%)
public static void method2() {
int op1 = 10;
// 变量不能重复声明(变量名不能相同)
long op1 = 12;
int op2 = 12;
System.out.println(op1 + op2);
System.out.println(op1 - op2);
System.out.println(op1 * op2);
// / 除 取得是商
System.out.println("商的结果是: " + (op2 / op1));
// % 取 余数
System.out.println(op2 % op1);
}
2.3 复合赋值运算符 (+= ,-= *=, /=, %=)
public static void method3() {
int a = 10;
a += 20;// 等价于 a = a + 20;
a *= 10;
System.out.println(a);
}
2.4 自增 递增(+1) ++ ,-- 递减(-1)
public static void method4() {
int a = 10;
// a++; // 等价于 a = a+1;
++a;
System.out.println(a);
--a; // 等价于 a= a-1;
System.out.println(a);
}
/**
* ++放在变量前面和后面的区别
*/
public static void method5() {
int a = 10;
// ++如果放在后面,是先给b赋值 a再自增;++如果放在前面是先自增 再赋值
int b = a++;
System.out.println("a: " + a);
System.out.println("b: " + b);
}
2.5 比较运算符 (>,>=,<,<=,==,!=)
其结果是boolean类型
public static void method6() {
System.out.println(1 - 0.34);
boolean b = 10 > 2;
System.out.println(10 > 2);
System.out.println(10 < 2);
System.out.println(10 == 2);
// 浮点型 不参与 双等号 比较
// System.out.println("浮点型: " + (0.66 == (1 - 0.34)));
System.out.println("!=: " + (10 != 2));
}
2.6 逻辑运算符 &(与) |(或) !(非 取反)
- 两边操作数的数据类型是boolean类型
- 结果也是boolean类型
public static void method7() {
// & 两边都是true的情况下才是true 其余情况全部都是false
boolean a = false & false;
System.out.println(a);
System.out.println(true & false);
System.out.println(false & false | false);
// | 两边只要有一个为true 整体结果就是true;
boolean b = false | false;
System.out.println("b: " + b);
// ! 取反
boolean c = !false;
System.out.println(" c: " + c);
// 使用 表达式
System.out.println(": " + ((10 > 2) & (2 > 3)));
//
System.out.println(" jieguo: " + ((10 > 2) & (2 > 3) | (2 < 9)));
}
2.7 &&(短路与 性能高而已) ||(短路或)
public static void method8() {
// false & true 只有当第一个表达式为false的时候才会出现短路
System.out.println((2 > 3) && (10 > 2));
// true &
System.out.println((2 < 3) && (10 > 2));
// || 只有第一个表达式 为true 才会出现短路
System.out.println((2 > 3) || (10 > 2));
}
2.8 三元运算符
* 取最值(最大值 最小值)
public static void method9() {
//当条件表达式结果为true的时候 取第一个表达式的值;否则取 第二个表达式的值
int a = (10 > 2) ? 2 + 8 : 2;
String str = 10 > 2 ? "第一个值大" : "第二个值大";
// 第一个表达式的值的数据类型和第二个表达式的值的数据类型保持一致
int b = 10 < 2 ? 10 : 2;
System.out.println();
System.out.println(a);
System.out.println(str);
eg:
int op1 = 123;
int op2 = 90;
int op3 = 1231;
int op4 = 223;
int maxTemp = op1 > op2 ? op1 : op2;
int maxTemp2 = maxTemp > op3 ? maxTemp : op3;
int max = maxTemp2 > op4 ? maxTemp2 : op4;
System.out.println("max: " + max);
int min = op1 < op2 ? op1 : op2;
System.out.println("min: " + min);
}