数据类型
基本数据类型:
- 整型:byte、short、int、long
- 浮点型:float、double
- 字符型:char
- 布尔型:boolean
- 占用空间
引用数据类型:
数组、类、接口
包装类
Java的基本数据类型用于定义简单的变量和属性将十分方便,但为了与面向对象的环境一致,Java中提供了基本数据类型的包装类(wrapper),它们是这些基本类型的面向对象的代表。
与8种基本数据类型相对应,基本数据类型的包装类也有8种,分别是:Character,Byte,Short,Integer,Long,Float,Double,Boolean。
特点:
1)这些类都提供了一些常数:如Integer.MAX_VALUE(整数最大值), Double.NaN(非数字),Double.POSITIVE_INFINITY(正无穷)等。
2)提供了valueOf(String),toString():用于从字符串转换及或转换成字符串。
3)通过xxxxValue()方法可以得到所包装的值:如Integer对象的intValue()方法。
4)对象中所包装的值是不可改变的(immutable)。要改变对象中的值只有重新生成新的对象。
5)toString(), equals()等方法进行了覆盖。
用途
主要用于基本类型和字符串之间的转换,其次就是十进制的转换。
1)基本类型–>字符串
a. 基本类型数值+""
b. 基本数据类型.toString(基本类型数值);
2)字符串–>基本类型
a. 使用包装类中的静态方法xxx parseXxx(“xxx”);
int parseInt(String str);
long parseLong(String str);
boolean parseBoolean(String str);
只有Character没有parse方法。
b. 如果字符串被Integer进行对象的封装,可使用另一个非静态的方法,intValue。
将一个Integer对象转成基本数据类型值。
c. 用Integer的静态方法valueOf(String s);
3)十进制–>其他进制
String toBinaryString(int i);
String toOctalString(int i);
String toHexString(int i);
String toString(int i,int radix);
4)其他进制–>十进制
int parseInt(String s, int radix);
字符串
字符串可以分为两大类:String类, StringBuffer和StringBuilder
1.String类:创建之后不会再做修改和变动。
String类的方法(按功能分):
a.能创建并返回一个新的String对象实例: concat, replace, replaceAll, substring, toLowerCase, toUpperCase, trim,toString.
b.查找: endsWith, startsWith, indexOf,,lastIndexOf.
c.比较: equals, equalsIgnoreCase,
d.字符及长度: charAt ,length.
Jdk1.5 增加了format函数: %序号$ 标识 宽度及精度 转换方式
String类的 matches, replaceAll, split可以使用正则表达式
StringBuffer和StringBuilder:创建之后允许再做更改和变化
StringBuffer类对象保存可修改的Unicode字符序列。在JDK1.5版本之后出现了 StringBuilder,StringBuilder与StringBuffer类似,它效率更高,不考虑线程安全性。 > StringBuffer:线程同步,有锁,效率低,用于但多线程
StringBuilder:线程不同步,无锁,效率高,用于单线程
下面详细说一说StringBuffer。
1)特点:a. 长度是可变的。(数组是固定长度)
b. 可以存储不同类型数据。(数组只能操作一种类型)
c. 最终要转成字符串进行使用。
2)构造方法
StringBuffer()
StringBuffer(int capacity)
StringBuffer(String initialString)
3)StringBuffer类的方法:append, insert, reverse, setCharAt, setLength
4) 扩充知识
java.util.StringTokenizer类提供了对字符串进行分割的功能。
构造:StringTokenizer(String str, String delim);
该类的重要方法有:
public int countTokens();// 分割串的个数
public boolean hasMoreTokens();// 是否还有分割串
public String nextToken();// 得到下一分割串
代码示例:
// 基本数据类型 ------> 包装类
@Test
public void demo1(){
int num1 = 10;
Integer integer = new Integer(num1);
System.out.println(num1);
System.out.println(integer);
System.out.println(integer.toString());
}
// 基本类型 ------> 字符串
@Test
public void demo2(){
Integer i1 = new Integer(123);
int n1 = 123;
System.out.println(i1 + "");
System.out.println(i1.toString());
}
// 字符串 --------> 基本类型
@Test
public void demo3(){
Integer i1 = new Integer("123");
System.out.println(i1.intValue());
System.out.println(Integer.parseInt("123") + 1);
System.out.println(Boolean.parseBoolean("true"));
}