1、Java的基本数据类型都有哪些?各占几个字节?
四类 | 八种 | 字节数 | 数据表示范围 |
整型 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int | 4 | -2147483648~2147483647 | |
long | 8 | -263~263-1 | |
浮点型 | float | 4 | -3.403E38~3.403E38 |
double | 8 | -1.798E308~1.798E308 | |
字符型 | char | 2 | 表示一个字符,如('a','A','0','家') |
布尔型 | boolean | 1 | 只有两个值true与false |
2、String是基本数据类型吗?
String是引用类型,底层用char数组 实现的
3、short s1=1;s1=s1+1;有错吗?short s1=1;s1 += 1;有错吗?
前者不正确,后者正确。对于short s1=1;s1 = s1+1;由于1是int类型,因此,s1+1 运算结果也是int型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1+=1;可以正确编译,因为s1+=1;相当于s1 = (short)(s1+1);其中有隐含的强制类型转换。
4、int和Integer有什么区别
Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作, Java 为每一个基本数据类型都引入了对应的包装类型( wrapper class int 的包装类就是Integer ,从 Java 5 开始引入了自动装箱 拆箱机制,使得二者可以相互转换。
Java为每个原始类型提供了包装类型:
-原始 类型:boolean,char,byte,short,int,long,float,double
-包装类型:Boolean,Char,Byte,Short,Integer,Long,Float,Double
5、String类常用方法
6、String、StringBuffer、StringBuilder的区别
(1)可变不可变
String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象。
StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改,不是生成新的对象;使用场景:对字符串经常改变情况下,主要方法: append() insert()等。
(2)线程是否安全
String:对象定义后不可变,线程安全。
StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较慢,适用于多线程下操作字符串缓冲区大量数据。
StringBuilder :是线程不安全的,适用于单线程下操作字符串缓冲区大量数据。
(3) 共同点
StringBuilder与 StringBuffer 有公共父类 AbstractStringBuilder( 抽象类 )。
StringBuilder、 StringBuffer 的方法都会调用 AbstractStringBuilder 中的公共方法,如 super.append(...) 。只是 StringBuffer 会在方法上加 synchronized 关键字,进行同步。最后,如果程序不是多线程的,那么使用StringBuilder 效率高于 StringBuffer 。
7、数据类型之间的转换
(1)字符串转基本数据类型
调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型。
(2)基本数据类型如何转字符串
一种方法是将基本数据类型与空字符串("")连接(+)即可获得 其所对应的字符串,另一种方法是调用String类中的valueOf()方法返回相应字符串。