提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据类型拓展
1、整数拓展
int i =10;//十进制 =>10
int i2=010;//八进制 =>8
int i3=0x10;//十六进制 0x 0~9A~F 16 =>16
2、浮点数拓展
//银行业务怎么表示 钱?不要用float 使用BigDecimal(数学工具类)
float f=0.1f; //0.1
double d=1.0/10;//0.1
sout(f==d);// ==>false (==判断相等)
sout(f);// ==>0.1
sout(d); //==>0.1
float d1 = 233333333f;
float d2 = d1 + 1;
sout(d1 == d2); //==>true ????
//why? == >有限、离散 、舍入误差 大约 接近但不等于
//所以最好避免使用浮点数进行比较
3、字符拓展
char c1='a'
sout(c1); //==>a
sout(int(c1));//==>97
//所有的字符本质还是数字
//编码 Unicode 2字节
…
String s1 = new String("hello world");
String s2 = new String("hello world");
sout(s1 == s2);// ===>false //比较的地址
String s3 = "hello world";
String s4 = "hello world";
sout(s3 == s4); //===>true //比较的值
3、boolean值拓展
boolean flag = true;
if(flag){} === if(flag == true){}
//less is more
二、类型转换
- Java强类型语言
- 运算中,不同类型的数据先转化为同一类型,然后进行运算
int i =128;
//强制转换 (数据类型)变量名 高--低
byte b = (byte)i;
//自动转换 (数据类型)变量名 低--高
double d = i;
sout(i); ==>128
sout(b); ==>-128 //内存溢出 byte 最大范围127
sout(d); ==>128.0
注意:
- 不能对布尔值进行转换
- 不能将对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能会内存溢出或者精度问题
//操作比较大的数的时候,注意溢出问题
//jdk7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int totol = moeny*years; //-1474836480 ,计算的时候溢出了
long totol1 = moeny*years;//默认是int,转换之前已经存在问题了
long totol3 = moeny*((long)years);//先把一个数转成long 2000000000‘
//L l
三、变量
//作用域
public class demo(){
//属性 :变量
//类变量 static
static double salary = 2500;
//实例变量:从属于对象,作用域为整个类
//布尔值默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args){
//局部变量;必须声明和初始化值
//局部变量 作用域在main方法中
int i =10;
sout(i);
//变量类型 变量名字 = new Demo();
Demo demo = new Demo();
sout(demo.age); //0
sout(demo.name);//null
//类变量 static
sout(salary); //2500
}
//其他方法
public void add(){
}
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了数据类型的扩展,类型转换、变量。