Java数据类型与运算符
1.Java数据类型划分
- 八种基本数据类型
- 整形:byte、short、int、long(默认值为0)
- 浮点型:double、float(默认值0.0)
- 字符型:char(默认值为’\u000’)
- 布尔型:boolean(默认值为false)
- 引用型数据类型:数组、类、接口(默认值为null)
1.1 整形
1.1.1 int
- 在Java中,任何一个整形常量都是int型,如10,100,2,5
- int有它的最大值和最小值,在计算时,会出现溢出的问题,如下:
public class Test{
public static void main(String[] args){
int maxValue = Integer.MAX_VALUE;
int minValue = Integer.MIN_VALUE;
long num = maxValue + 1L; //加L进行整形提升
System.out.println(maxValue); //2147483647
System.out.println(maxValue + 1); //-2147483648
System.out.println(num); //2147483648
System.out.println(minValue); //-2147483648
System.out.println(minValue - 1);
}
}
- 小的数据类型和大的数据类型运算,自动提升为大的数据类型
- 大的数据类型转为小的数据类型,必须进行强转,但有时会丢失精度,如下:
long num = 2147483648L;
int a = (int)num; //结果为 -2147483648
- 数据类型的默认值在主方法无效
- 只有在类中有默认值,如下:
public class Test{
public static void main(String[] args){
int num; //错误,没有默认值,必须初始化
System.out.println(num);
}
}
1.1.2 byte
- 将一个常量整形赋给byte,理应强转,但常量数据在byte范围内,所以不用强转
byte num = 10;
System.out.println(num);
- 将一个常量整形赋给byte,如果数据类型超过byte范围,强转的时候会有精度损失
byte num = (byte)300;
System.out.println(num); //输出44
- 将一个整形变量赋给byte,必须强转
int num = 10;
byte num1 = (byte)num;
System.out.println(num1); //10
1.2 浮点型
描述小数默认为double类型
1.2.1 double
- double 类型数据运算时,会自动提升为double
double num = 10.2;
System.out.println(num * 2); //20.4
1.2.2 float
定义float变量时,后面要加F
float f1 = 1.1F;
- 用一个int / int = int ; 用一个 int /double = double
int num1 = 10;
int num2 = 6;
System.out.println(num1 / num2); //1
System.out.println(num1 / (double)num2); //1.666666666666667
1.3 char
- A ~ Z (65 ~ 90)
- a ~ z (97 ~ 122)
- int 到char需要强制类型转换。char到int自动提升
char c = 'A';
int num = c;
System.out.println(num); //65
int num2 = 32 + 'A'; //int + char = int
char c2 = (char)num2; //a
1.4 布尔型
在java中,有Boolean类型表示真假,但在其他语言中0表示假,非0为真
1.5 String 类
用char描述单个字符,用String描述多个字符,String 不是基本数据类型,是引用数据类型
String str = "我爱java";
- String 中可以使用’+’,用来连接两个字符串
int num = 10;
double num1 = 10.2;
System.out.println("计算结果是:"+ num + num1); //计算结果是:1010.2
System.out.println("计算结果是:"+(num + num1)); //计算结果是:20.2
- 在输出语句时,有几个转义字符
\n , \t , \
2.Java 运算符
2.1 基本运算符
和其他语言一样,因为存在优先级问题,所以尽量加括号
2.2 三目运算符
int x = 3;
int y = 4;
int z = x>y ? x+y : x-y;
System.out.println(z); //-1
2.3 关系运算符
> >= < <= != ==
结果返回真或假
2.4 逻辑运算符
与& &&
,或| ||
, 非!
if (1<2 | (10/0 == 0)){
System.out.println("条件满足"); //java.lang.ArithmeticException: / by zero
}
if (1<2 || (10/0 == 0)){
System.out.println("条件满足"); //输出条件满足
}
- 由以上可知,在使用
|
时,两个条件都得判断;在使用||
时,只需要判断第一个条件,后面不判断 - 同理,
&
和&&
是一样的
2.5 位运算符
& | ^ ~
二进制运算