八大基础类型:




java中的八大基本类型 八大java基础类型_基础面试题



1)四种整数类型(byte、short、int、long):





byte:8 位,用于表示最小数据单位,如文件中数据,-128~127





short:16 位,很少用,-32768 ~ 32767





int:32 位、最常用,-2^31-1~2^31 (21 亿)





long:64 位、次常用





注意事项:





int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。





整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。





小于 32 位数的变量,都按 int 结果计算。





强转符比数学运算符优先级高。见常量与变量中的例子。





2)两种浮点数类型(float、double):





float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。





double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾





注意事项:





二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方)





尾数: . 1010100010 指数:1010 基数:2





浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X





float 的精度没有 long 高,有效位数(尾数)短。





float 的范围大于 long 指数可以很大。





浮点数是不精确的,不能对浮点数进行精确比较。





3)一种字符类型(char):





char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。





注意事项:





不能为 0个字符。





转义字符:



①\r表示接受键盘输入,相当于按下了回车键;



②\n表示换行;



③\t表示制表符,相当于Table键;



④\b表示退格键,相当于Back Space键;



⑤\'表示单引号;



⑥\''表示双引号;



⑦\\表示一个斜杠\。





4)一种布尔类型(boolean):true 真 和 false 假。





5)类型转换: char





自动转换:byte-->short-->int-->long-->float-->double





强制转换:①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。





6)记忆:8位:Byte(字节型)





16位:short(短整型)、char(字符型)





32位:int(整型)、float(单精度型/浮点型)





64位:long(长整型)、double(双精度型)





最后一个:boolean(布尔类型)





数据类型之间的转换



1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。



自动转换



具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些类型由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小。



①下面的语句可以在Java中直接通过:



byte b;int i=b; long l=b; float f=b; double d=b;



②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如



char c='c'; int i=c;



System.out.println("output:"+i);输出:output:99;



③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。



short i=99 ; char c=(char)i; System.out.println("output:"+c);输出:output:c;



强制转换



将"大"数据转换为"小"数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。






2)表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。



①所有的byte,short,char型的值将被提升为int型;



②如果有一个操作数是long型,计算结果是long型;



③如果有一个操作数是float型,计算结果是float型;



④如果有一个操作数是double型,计算结果是double型;



例, byte b; b=3; b=(byte)(b*3);//必须声明byte。






3)包装类过渡类型转换



一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:



①当希望把float型转换为double型时:



float f1=100.00f;
 
 
Float F1=new Float(f1);
 
 
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法



②当希望把double型转换为int型时:


double d1=100.00;
 
 
Double D1=new Double(d1);
 
 
int i1=D1.intValue();

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)



而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。






4)字符串与其它类型间的转换



其它类型向字符串的转换



①调用类的串转换方法:X.toString();



②自动转换:X+"";



③使用String的方法:String.volueOf(X);



字符串作为值,向其它类型的转换



①先转换成相应的封装器实例,再调用对应的方法转换成其它类型



例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()



②静态parseXXX方法
 
 
String s = "1";
 
 
byte b = Byte.parseByte( s );
 
 
short t = Short.parseShort( s );
 
 
int i = Integer.parseInt( s );
 
 
long l = Long.parseLong( s );
 
 
Float f = Float.parseFloat( s );
 
 
Double d = Double.parseDouble( s );
 
 
③Character的getNumericValue(char ch)方法





总结:只有boolean不参与数据类型的转换



(1).自动类型的转换:a.常数在表数范围内是能够自动类型转换的



b.数据范围小的能够自动数据类型大的转换(注意特例)



int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度



c.引用类型能够自动转换为父类的



d.基本类型和它们包装类型是能够互相转换的



(2).强制类型转换:用圆括号括起来目标类型,置于变量前





八大类型的常见面试题或笔试题:



1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?



答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。



对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。



2、char类型变量能不能储存一个中文的汉子,为什么?



char类型变量是用来储存Unicode编码的字符的,unicode字符集包含了汉字,所以char类型当然可以存储汉字的,还有一种特殊情况就是某个生僻字没有包含在unicode编码字符集中,那么就char类型就不能存储该生僻字。



3、Integer和int的区别



int是java的8种内置的原始数据类型。Java为每个原始类型都提供了一个封装类,Integer就是int的封装类。



int变量的默认值为0,Integer变量的默认值为null,这一点说明Integer可以区分出未赋值和值为0的区别。



4、switch语句能否作用在byte上,能否作用在long上,能否作用在string上?



byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上



long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上



string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了。



5. String是最基本的数据类型吗?



答:不是。



Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;



6. String 和StringBuffer的区别:



答: JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。



7.byte a=130;System.out.println(a);请问结果是什么。



答:未编译的问题:类型不匹配:不能从int转换为字节。



根据byte的取值范围是-127到127。130已经超出了byte的取值范围,是属于int类型的取值范围内。而根据类型转 换,大数据类型不能往小数据类型转换。