java基础-数据类型

时间:2022-10-19 17:18:21
一、8种数据类型
byte类型 表示整数。值域【-128,127】     <所占空间为1字节> 默认值
short类型 表示整数。值域【-32768,32767】<2> 默认值:0
int类型 表示整数。 值域【-2147483648,2147483647】<4> 默认值:0
long类型 长整型。<8> 默认值:0
float类型 单精浮点数。<4>
double类型 双精浮点数。<8> 默认值 0.0(小数默认double类型)
char类型 字符型<2> 默认值
boolean类型 表示逻辑值true和false。<1> 默认值:false

精度类型由小到大比较:byte < short < int < long < float < double

包装类(Wrapper Class)
  • byte ---Byte
  • int ---Integer
  • short ---Short
  • long ---Long
  • float ---Float
  • double ---Double
  • boolean ---Boolean
  • char ---Character
集合不允许存放基本类型数据,只能存放包装类型
基本类型和包装类之间可以相互转换
通过包装类,String可以和基本类型之间相互转换

二、 数据类型转换
1、不能对boolean类型进行数据转化
2、不能把对象类型转换成为不相关类的对象
3、大转小必须使用强转
4、浮点数到整数的转换是舍弃小数,而不是四舍五入
Java表达式转型规则由低到高转换: 
  • 所有的byte,short,char型的值将被提升为int型; 
  • 如果有一个操作数是long型,计算结果是long型; 
  • 如果有一个操作数是float型,计算结果是float型; 
  • 如果有一个操作数是double型,计算结果是double型; 
fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
5、转型
java向上转型和向下转型
转型是在 继承的基础 上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。
向上转型: 子类引用的对象转换为父类类型称为向上转型 。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口
向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误类型
向下转型: 父类引用的对象转换为子类类型称为向下转型。
前者是一个向上转型,Animal dog 引用指向new Dog();子类对象当成父类对象,只能调用父类的成员,如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override)。这个调用过程就称为“动态绑定”。
在向下转型过程中,分为两种情况:
情况一:如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的。也就是编译是不会出错误的。
情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。它可以使用instanceof来避免出错此类错误

总结:
1、父类引用可以指向子类对象,子类引用不能指向父类对象。
2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
   如Father father = new Son();
3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。
   如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;其中father前面的(Son)必须添加,进行强制转换。
4、upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效
5、向上转型的作用,减少重复代码,父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想。

三、运算符
三目运算符: 表达式1?表达式2:表达式3(1true 取2的值;1false,取3的值)
1、算术运算符
前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。
后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
2、关系运算符
3、逻辑运算符
4、位运算符-位运算符在二进制环境下进行运算
5、赋值运算符
>>> 高位左移运算