Java基础类型拓展
public class Demo03 {
public static void main(String[] args) {
//基础数据类型拓展
//整型 二进制ob 十进制 八进制0 十六进制0x
int i = 10;
int i1 = 010; //八进制
int i2 = 0x10; //十六机制
System.out.println(i); //10
System.out.println(i1); //8
System.out.println(i2); //16
System.out.println("======================");
//浮点数拓展
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f == d); //false
System.out.println(f); //0.1
System.out.println(d); //0.1
float f1 = 21231212121212f;
float f2 = f1 + 1;
System.out.println(f1 == f2); //true
/*所以说浮点数是存在缺陷的,浮点数是:有限的、离散的、是有舍入误差的,表示的是一个大约数,接近但不等于*/
/*所以最好完全避免使用浮点数进行比较*/
/*所以最好完全避免使用浮点数进行比较*/
/*所以最好完全避免使用浮点数进行比较*/
//所以后面比较的时候会用到BigDecimal 是一个数学工具类
//字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换 97
System.out.println(c2);
System.out.println((int)c2); //强制转换 20013
//所有的字符本质还是数字
//编码 Unicode--->表:(A=65 a=97) 占据2个字节 最多可以表示65536个字符
//表示范围U0000-UFFFF
char c3 = 'u0061';
System.out.println(c3); //a
//转义字符
// 制表符
换行
System.out.println("Hello World"); //Hello World
System.out.println("Hello
World");
/*Hello
World*/
String s1 = new String("Hello World");
String s2 = new String("Hello World");
System.out.println(s1 == s2); //false
String s3 = "Hello World";
String s4 = "Hello World";
System.out.println(s3 == s4); //true
//对象 从内存上分析
//布尔值拓展
boolean flag = true;
if(flag){}
//上下两行的表示意思相同,后面的大多时候都会使用上面的方法
if(flag==true){}
}
}
转义字符表
Java类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
-
运算中,不同类型的数据先转化为同一类型,然后在进行运算
-
强制类型转换
-
自动类型转换
public class Demo04 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i;
System.out.println(i); //128
System.out.println(b); //-128
/*很明显第二个结果输出的不符合预期,这是因为byte类型的数据范围是-128~127,
因为类型强制转换,导致了内存溢出所以在操作的时候要尽量避免*/
// 强制转换格式: (类型)变量名 低---高
// 自动转换: 不需要任何操作 高---低
/*
* 注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量打的时候,强制转换
* 4.转换的时候可能存在内存溢出或者精度问题【浮点数】!
* */
System.out.println((int)23.7); //23
System.out.println((int)-12.5f); //-12
char c = 'a';
int d = c + 1;
System.out.println(d); //98
System.out.println((char)d); //b
}
}
大数操作的时候应该注意的问题
public class Demo05 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以使用下划线分割,并且输出的时候不会输出下划线
int money = 10_0000_0000;
int years = 20;
int total = money * years; //-1474836480 说明计算的时候溢出了
long total2 = money * years; //-1474836480 表示默认是Int,转换之前就已经存在问题了
long total3 = money * (long)years; //20000000000 先把一个数转换为long,就能符合强类型转换了
System.out.println(total3);
}
}