1:枚举
enum jdk1.5之后引入的新特性
在jdk1.5之前,我们定义常量都是:public static final ... 现在有了枚举,可以把相关的常量分组到一个枚举类型里,枚举指由一组固定的常量组成的类型;
可将枚举看成一种特殊的类,枚举的思想很简单,它代表了一组固定的常量值。
声明枚举时,必须使用enum关键字,然后自定义枚举的名称,枚举声明的语法如下:
Public enum enumname{
enum-body, //一般写常量
}
经典案例:使用枚举描述一个星期的计划:
public void doWhat(int day){
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日,敲代码");
break;
case 6:
System.out.println("周六,继续代码");
break;
case 7:
System.out.println("周日,先睡觉,在敲代码");
break;
default:
System.out.println("你写错了,赶紧回去写代码");
break;
}
}
public static void main(String[] args) {
Test t = new Test();
t.doWhat(6);
}
2、包装类
介绍:object类中提供了很多有用的方法,这些方法只有对象才能调用,
基本数据类型不是对象,java中的基本数据类型int,double等不是对象,无法通过向上转型获取到object提供的方法,而像String却可以,只因为String是一个对象。基于数据类型由于这样的特性,导致无法参与转型,泛型等过程。为了弥补这个缺陷,java提供了包装类
java为没中基本数据类型分别设置了对应的类,称之为包装类
基本数据类型及对应的包装类 | |
基本数据类型 | 对应的包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
每个包装类的对象可以封装一个相应的基本数据类型的数据;
所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例:
如:
Integer in = new Integer(12); // 创建了一个整数类型的对象,其值为12
注意:
Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
2、包装类的常用方法
1、基本数据类型与包装类的转换
基本类型和对应的包装类可以相互装换:
- 基本类型转为包装类称为装箱,例如把 int 包装成 Integer 类的对象;使用包装类的构造方法;
- 包装类转为基本类型称为拆箱,例如把 Integer 包装类型转为 int ; 使用intValue();
2:toString 基本类型->字符串
toString(): 以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
String str = Integer.toString(88);
String str2 = Double.toString(88.9);
3:parseXXX(), 字符串->基本类型
parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
long long1 = Long.parseLong("123");
boolean b = Boolean.parseBoolean("true");
4:valueOf(), 基本类型->包装类
所有包装类都有这样的方法:valueOf(type value);作用是将一个基本类型转换为包装类;
Integer in = Integer.valueOf(12);
Double valueOf = Double.valueOf(12.3);
Boolean valueOf2 = Boolean.valueOf(true);
3、装箱和拆箱
基本类型转为包装类成为装箱,
例如把 int 包装成 Integer 类的对象;使用包装类的构造方法;valueOf()方法
包装类转为基本类型成为拆箱
例如把 Integer 类的转为 int ; 使用intValue();
自动装箱:Integer i = 12;
自动拆箱:int num = i;
4、math
Java的Math类封装了很多与数学有关的属性和方法。
Abs - 求绝对值
Max/min - 最大值最小值
random() - 生成一个0-1之间的随机数
5、random类介绍
Java语言中,随机数的产生是由类库中的Random类实现的。
Random类是一个随机数产生器,构造方法Random()中使用当前的时间来初始化Random对象,因为没有任何时刻的时间是相同的,所以可以减少随机数序列相同的可能性。
Random rand = new Random();
int n=rand.nextInt();//生成一个整数类型的随机整数
Random类的nextInt()方法还可以在有限范围内产生随机数,其方法声明为:
public int nextInt(int n);
该方法返回一个伪随机数,它是从此随机数生成的序列中取出的、【0,n)之间均匀分布的整型值
6、String
字符串是java中使用最频繁的一种类型,使用String来表示。
注意:字符串是常量;它们的值在创建之后不能更改。
常用方法:
数组的长度:length 属性,集合的长度,字符串的长度,length方法
CharAt(int index) ; 返回指定位置的字符
length() - 求字符串的长度
Equals() - 比较两个字符串是否相同
equalsIgnoreCase() - 忽略大小写比较
toUpperCase() - 转换为大写
toLowerCase() - 转换为小写
concat() - 字符串链接, + 是一样的
public String[] split(String regex):根据给定表达式的匹配拆分此字符串
/**
* 数组的长度:length 属性,集合的长度,字符串的长度,length方法
CharAt(int index) ; 返回指定位置的字符
length() - 求字符串的长度
equals() - 比较两个字符串是否相同
equalsIgnoreCase() - 忽略大小写比较
toUpperCase() - 转换为大写
toLowerCase() - 转换为小写
concat() - 字符串链接, + 是一样的
public int indexOf(String value)
public int lastIndexOf(String value) 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1
public String substring(int index) 提取从位置索引开始的字符串部分
public String substring(int beginindex, int endindex) 提取beginindex和endindex之间的字符串部分
public String trim() 返回一个前后不含任何空格的调用字符串的副本
*/
// 字符串,也是有下标的,从0考试,其实字符串是一个常量
String s = " abc ABa"; //
String ss = "ABCABA";
// String ss = new String("abcABa");
char first = s.charAt(0); // 根据下标,获取指定位置的字符
char san = s.charAt(3); // 下标为3的,获取的是第四个
int length = s.length(); // 求字符串的长度
// indexOf(String s) ,
// 查找一个字符串中是不是包含另外一个字符串,如果找到了,返回的第一个下标,如果没有找到的话,则返回-1、
// substring(num1) , 截取一段,从num1的下标开始,到最后
// substring(num1,num2) , 截取字符串的一段从num1开始,到num2结束 , 不包含num2的那个位置内容[)
String substring = s.substring(2);
String substring2 = s.substring(2,4);
System.out.println(substring);
System.out.println(substring2);
System.out.println(s);
System.out.println(s.trim());
System.out.println(s.length());
int i = s.lastIndexOf("bcA");
System.out.println("i:" + i);
System.out.println(first+"------"+san);
System.out.println("length : " + length);
System.out.println(s.equalsIgnoreCase(ss));
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase());
System.out.println(s.concat(ss));