1,java的虚拟机叫jvm,有了jvm就可以实现跨平台。java具有编译型和解释型的特点,jvm是java的解释器,将命令解释给操作系统让操作系统执行命令。
2,float和double的区别:
float:32位的,有限的,大约的,接近但不等于的
double:64位的,精准的
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
false 0.1 0.1
3,String并不是关键词,String数据类型和String类的区别
String a=new String("huuuu");
String b=new String("huuuu");
System.out.println(a==b);
String c="huuuu";
String d="huuuu";
System.out.println(c==d);
false true
4,boolean类型
boolean flag=true;
if(flag=true){}//和下面代码一样
if(flag){}
5,类型转换
int i=128;
//强制转换:(类型)变量名 高--低
//自动转换: 低--高
byte b=(byte) i;//强制转换
System.out.println(i);
System.out.println(b);
Byte的源码:
public final class Byte extends Number implements Comparable {
public static final byte MIN_VALUE = -128;
public static final byte MAX_VALUE = 127;//最大是127
@SuppressWarnings("unchecked")
128 -128//bety类型溢出
6,溢出
int mm=10_0000_0000;//jdk7可以在数字之间使用下划线分割
int y=20;
int to=mm*y;
System.out.println(to);
-1474836480//溢出了
int的源码:
public final class Integer extends Number implements Comparable {
@Native public static final int MIN_VALUE = 0x80000000;
@Native public static final int MAX_VALUE = 0x7fffffff;
@SuppressWarnings("unchecked")
解决溢出问题
int mm=10_0000_0000;
int y=20;
int to=mm*y;
System.out.println(to);
System.out.println((long)to);
long to1=mm*y;
long to2=mm*(long)y;
System.out.println(to1);
System.out.println(to2);
-1474836480 -1474836480 -1474836480 20000000000
或者
long to1=(long) mm*y;
long to2=mm*(long)y;
System.out.println(to1);
System.out.println(to2);
20000000000 20000000000



