javaSE基础学习day2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37129433/article/details/87868727

面试

一下内容可能是面试可能会问到的。

JAVA变量类型的范围

整数类型:
byte 一个字节 128 -128 + 127 +127
short 两个字节 2 15 -2^{15} 2 15 1 2^{15}-1
int 四个字节 2 31 -2^{31} 2 31 1 2^{31}-1
long 八个字节 2 63 -2^{63} 2 63 1 2^{63}-1
浮点类型:
float 四个字节 3.403 E 38 -3.403E38 3.403 E 38 3.403E38 单精度
double 八个字节 1.798 E 308 -1.798E308 1.798 E 308 1.798E308 双精度
字符型:
char 占两个字节 0   65535 0~65535
boolean 理论上是占八分之一个字节,因为一个开关就可以决定True or False了,但是Java中boolean类型没有明确的规定大小。

变量转化

package test;

public class test {
	public static void main(String[] args) {
		byte b1 = 3;
		byte b2 = 3;
		byte b3 = b1 + b2;
		System.out.println(b3);
	}
}

该代码编译是会报错的。因为java语言byte与byte(short,char)进行运算的时候会提升为int,两个int类型相加的结果也是int类型。把int类型赋值给byte类型会出现精度损失。

package test;

public class test {
	public static void main(String[] args) {
		byte b1 = 3+7;
		System.out.println(b1);
	}
}

那为什么这段代码不会报错呢?3是int类型的,7也是int类型的。int+int同样应该是int。赋值给byte类型应该会有精度损失,那为什么这个没有报错呢?因为java编译器有常量优化机制。在编译的时候已经把3+7算好了,3+7在-128到127的范围类就行了。

混合运算类型转化

byte,short,char ===> int ===> long ===> float ===> double

注意虽然float是四个字节,long是八个字节。但是由于存储方式不同。所以float其实比long要大。

任何数据类型用+与字符串相连接都会产生新的字符串
例如:

package test;
public class test {
	public static void main(String[] args) {
		System.out.println("hello" + 1 +'a');
	}
}

输出结果:hello1a

那么接下来猜猜这个会输出什么?

package test;
public class test {
	public static void main(String[] args) {
		System.out.println('a' + 1 + "hello");
	}
}

结果:98hello。因为运算从左往右。'a’先变成int类型与1相加再与字符串相加。

char类型

char类型可以存储一个中文汉字吗?,java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字符,中文也是占用两个字节。所以Java中的字符可以存储一个中文汉字。

运算符

package test;
public class test {
	public static void main(String[] args) {
		short s = 1;s = s+1;
		System.out.println(s);
	}
}

该段代码会报错,理由一样short 类型进行运算时会提升为Int类型,而int类型转化成short类型会出现精度损失。

package test;
public class test {
	public static void main(String[] args) {
		short s = 1;s += 1;
		System.out.println(s);
	}
}

而这段代码就不会报错。因为他相当于

package test;
public class test {
	public static void main(String[] args) {
		short s = 1;s =(short) (s + 1);
		System.out.println(s);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37129433/article/details/87868727
今日推荐