• 基本数据类型的包装类
包装类是将基本类型封装到一个类中包含属性和方法,方便对象操作
包装类位于java.lang包中
包装类和基本类型
▪ 基本数据类型转换为包装类
Integer intValue=new Integer(21);
Integer intValue=new Integer("21");
Integer intValue=Integer.valueOf("21");
▪ 包装类转换成基本类型
Integer integerld=new Integer(25);
int intld=integerld.intValue();
▪ 基本类型和包装类的自动转换
Integer intObject=5;
int intValue=intObject;
包装类并不是用来取代基本类型的
自动装箱和自动拆箱 (auto-boxing & unboxing)
▪ 自动装箱
– 基本类型就自动地封装到与它相同类型的包装中,如:
– Integer i = 100;
– 本质上是,编译器编译时为我们添加了:
– Integer i = Integer.valueOf(100);
▪ 自动拆箱
– 包装类对象自动转换成基本类型数据。如:
– int a = new Integer(100);
– 本质上,编译器编译时为我们添加了:
– int a = new Integer(100).intValue();
• 字符串相关类
不可变字符序列:String
String类位于java.lang包中,具有丰富的方法
– 计算字符串的长度、比较字符串、连接字符串、提取字符串
▪ Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的。
▪ Java允许使用符号"+"把两个字符串连接起来
– String s1 = “Hello”;String s2 = “World!”;
– String s = s1 + s2; //HelloWorld!
String类的常用方法
char charAt(int index) 返回字符串中第index个字符。
boolean equals(String other) 如果字符串与other相等,返回true
boolean equalsIgnoreCase(String other) 如果字符串与other相等(忽略大小写),则返回true
int indexOf(String str) lastIndexOf(String str,int idx)
int length() 返回字符串的长度。
String replace(char oldChar,char newChar) 返回一个新串,它是通过用 newChar 替换此字符串中出现的所有oldChar而生成的
boolean startsWith(String prefix) 如果字符串以prefix开始,则返回true
boolean endsWith(String prefix) 如果字符串以prefix结尾,则返回true
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
返回一个新字符串,该串包含从原始字符串beginIndex到串尾戒endIndex-1的所有字符
String toLowerCase()
返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母
String toUpperCase()
返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母
String trim()
返回一个新字符串,该串删除了原始字符串头部和尾部的空格
字符串长度 length()方法
字符串比较
equals判断字符串值相等,==判断字符串对象引用相等!
字符串连接:1、使用“+”
2、使用String类的concat()方法
常用提取方法
方 法 | |
public int indexOf(int ch) | 搜索第一个出现的字符ch(或字符串value) |
public int indexOf(String value) | |
public int lastIndexOf(int ch) | 搜索最后一个出现的字符ch(或字符串value) |
public int lastIndexOf(String value) |
方 法 | 说明 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex, int endindex) | 提取beginindex和endindex之间的字符串部分 |
public String trim() | 返回一个前后不含任何空格的调用字符串的副本 |
字符串拆分
String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回
可变字符序列:StringBuffer、StringBuilder
StringBuffer:String增强版,线程安全
StringBuilder:字符串缓冲区,是一个容器,线程不安全
StringBuffer类
public class sbAppend {
public static void main(String[ ] args) {
StringBuffer sb = new StringBuffer("青春无悔");
int num=110;
StringBuffer sb1 = sb.append("我心永恒");
System.out.println(sb1);
StringBuffer sb2 = sb1.append('啊');
System.out.println(sb2);
StringBuffer sb3 = sb2.append(num);
System.out.println(sb3);
}
StringBuffer类
▪ 利用StringBuffer类的length()和insert ()方法实现需求
▪ 将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
public class TestInsert {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一串数字: ");
String nums = input.next();
StringBuffer str=new StringBuffer(nums);
for(int i=str.length()-3;i>0;i=i-3){
str.insert(i,',');
}
System.out.print(str);
}
}
字符串选用
▪ String:不可变字符序列
▪ StringBuilder:可变字符序列、效率高、线程不安全
▪ StringBuffer:可变字符序列、效率低、线程安全
▪ String使用陷阱:
– string s="a"; //创建了一个字符串
s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串
s+"b"。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内
存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。
• 时间处理相关类
Date类:表示日期和时间
提供操作日期和时间各组成部分的方法
DateFormat类 与SimpleDateFormat类
用于定制日期时间的格式
Date date = new Date(); //创建日期对象
SimpleDateFormat formater = new SimpleDateFormat("yyyy-
MM-dd HH:mm:ss");//定制日期格式
String now = formater.format(date);
System.out.println(now);
Calendar类:
抽象类
用于设置和获取日期/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历
方法或属性 | 说明 |
int get(int field) | 返回给定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_W EEK | 指示一个星期中的某天 |
• Math类
▪ 包含了常见的数学运算函数。
▪ random()生成[0,1)之间的随机浮点数
▪ 生成:0-10之间的任意整数:
– int a = (int)(10*Math.random());
▪ 生成:20-30之间的任意整数:
– int b = 20 + (int)(10*Math.random());
枚举类型:
1. 只能够取特定值中的一个
2. 使用enum关键字
3. 所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!
而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是publi
c static final的。可以直接通过枚举类型名直接使用它们。)
4. 强烈建议当你需要定义一组常量时,使用枚举类型