1.枚举类
1.1 什么是枚举类?
- 类的对象只有有限个,确定的。我们称此类为枚举类;
- 当需要定义一组常量时,强烈建议使用枚举类;
- 如果枚举类中只有一个对象,则可以作为单例模式的实现方式;
- 不能再继承其他的类(因为已经继承了
java.lang.Enum
类); switch
参数可以使用Enum;- enum 允许为eunm 实例编写方法。所以可以为每个enum 实例赋予各自不同的行为。
1.2 枚举类的定义
//1.最简单的枚举类
public enum Season {
//1.下面这几个就是枚举类的所有对象,多个对象之间用","隔开,末尾对象";"结束
spring,
SUMMER,
AUTUMN,
WINTER;
}
//可以通过 类名+. 的方式获取其实例化对象的引用
public static void main(String[] args) {
//获取枚举类的对象
Season season = Season.spring;
//输出结果是: spring
System.out.println(season);
//此时的 Season.spring可以当做一个常量
}
//2. enum类也可以定义构造器、属性、方法。
//其中,构造器只能是私有的(默认是private)
public enum Season {
spring("春天","绿色"),
SUMMER("夏天","橙色"),
AUTUMN("秋天","黄色"),
WINTER("冬天","白色");
private final String name;
private final String color;
Season(String name,String color) {
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
}
//可以通过 类名+. 的方式获取其实例化对象的引用
public static void main(String[] args) {
Season season = Season.spring;
//输出结果是:绿色
System.out.println(season.getColor());
System.out.println(Season.spring.getColor());
}
复制代码
1.3枚举类常用方法
- 这些方法继承于
java.lang.Enum
类
//1. toString() :返回枚举类对象的名称
System.out.println(season.toString());
//结果:spring
//2. values():返回所的枚举类对象构成的数组
//注意:是 enum类名.values()
System.out.println(Season.values());
//结果:[LenumTest.Season;@2a098129
for (Season season1 : Season.values()){
System.out.println(season1);
}
//循环输出内容;
/*spring
SUMMER
AUTUMN
WINTER*/
//3. valueOf(String objName):返回枚举类中对象名是objName的对象。
//如果没objName的枚举类对象,则抛异常:IllegalArgumentException
Season winter = Season.valueOf("WINTER");
System.out.println(winter);
//结果:WINTER
复制代码
1.4 枚举类对象怎么实现接口?
interface Info{
void show();
}
//使用enum关键字枚举类
enum Season1 implements Info{
SPRING("春天","春暖花开"){
@Override
public void show() {
System.out.println("春天在哪里?");
}
},
SUMMER("夏天","夏日炎炎"){
@Override
public void show() {
System.out.println("宁夏");
}
},
AUTUMN("秋天","秋高气爽"){
@Override
public void show() {
System.out.println("秋天不回来");
}
},
WINTER("冬天","冰天雪地"){
@Override
public void show() {
System.out.println("大约在冬季");
}
};
}
复制代码
2.java常用类
2.1 String类
2.1.1 介绍
String
:字符串,使用一对""
引起来表示;- String**声明为
final
**的,不可被继承 - String实现了
Serializable
接口:表示字符串是支持序列化的。
实现了Comparable
接口:表示String可以比较大小 - String内部定义了final char[] value用于存储字符串数据
2.1.2 常用方法
-
眼界问题,我感觉常用的就前面几个。
-
String str = "Hello World !" //1.判断是否是空字符串 boolean isEmpty(); //2.比较字符串的内容是否相同: "hello".equals(str); boolean equals(Object obj); //3.返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex); //4.返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。 String substring(int beginIndex, int endIndex); //5.测试此字符串是否以指定的前缀开始 boolean startsWith(String prefix); //6.当且仅当此字符串包含指定的 char 值序列时,返回 true boolean contains(CharSequence s); //7.返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 String replace(char oldChar, char newChar); //8.使用给定的 replacement 替换此字符串所 匹配给定的正则表达式 的子字符串。 String replaceAll(String regex, String replacement); //9.根据给定正则表达式的匹配拆分此字符串。 String[] split(String regex); //String[] numberArr = "1,2,3,4,".split(","); //返回字符串的长度 int length(); //返回某索引处的字符 char charAt(int index); //将 String 中的所字符转换为小写 String toLowerCase(); //将 String 中的所字符转换为大写 String toUpperCase(); //返回字符串的副本,忽略字符串首字母前边的空白和尾部空白 String trim(); //与equals方法类似,忽略大小写 boolean equalsIgnoreCase(String anotherString); //将指定字符串连接到此字符串的结尾。 等价于用“+” String concat(String str); //比较两个字符串的大小,"hello".compareTo(str); int compareTo(String anotherString); //测试此字符串是否以指定的后缀结束 boolean endsWith(String suffix); //测试此字符串从指定索引开始的子字符串是否以指定前缀开始,索引从0开始 boolean startsWith(String prefix, int toffset); /* String str = "Hello World !"; System.out.println(str.startsWith("Wo",6));//true */ //返回指定子字符串在此字符串中第一次出现处的索引 int indexOf(String str); //返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 int indexOf(String str, int fromIndex); //返回指定子字符串在此字符串中最右边出现处的索引 int lastIndexOf(String str); //返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 int lastIndexOf(String str, int fromIndex); //注:indexOf和lastIndexOf方法如果未找到都是返回-1 //替换: //使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 String replaceFirst(String regex, String replacement); //匹配: //告知此字符串是否匹配给定的正则表达式。 boolean matches(String regex); //切片: //根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。 String[] split(String regex, int limit); 复制代码
2.2 StringBuffer、StringBuilder类
2.2.1 比较
-
String
、StringBuffer
、StringBuilder
的比较String
:不可变的字符序列;底层使用char[]
存储StringBuffer
:可变的字符序列;线程安全的,效率低;底层使用char[]
存储
-
StringBuilder
:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]
存储
2.2.2 扩容问题
- 如果要添加的数据底层数组放不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2倍 + 2,同时将原数组中的元素复制到新的数组中。
2.2.3 执行效率
-
三者的执行效率:
- 从高到低排列:StringBuilder > StringBuffer > String;
- 但是我一般都用StringBuffer ?
2.2.4 常用方法
-
StringBuffer sb = new StringBuffer(); //增:sb.append(xxx); append(xxx); //删: delete(int start,int end); deleteCharAt(int index); //删除最后一个字符:sb.deleteCharAt(sb.length-1); //改: setCharAt(int n ,char ch) / replace(int start, int end, String str) //查: charAt(int n ) //插: insert(int offset, xxx) //长度: length(); 复制代码
2.3有关时间的API
2.3.1获取系统当前时间
-
System类中的
currentTimeMillis()
long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 //称为时间戳 复制代码
2.3.2 java.util.Date类
-
//构造器一:Date():创建一个对应当前时间的Date对象 Date date = new Date(); //构造器二:创建指定毫秒数的Date对象 Date date = new Date(35235325345L); //System.out.println(date.toString()); //输出:Sat Feb 13 03:35:25 CST 1971 复制代码
2.3.3 java.text.SimpleDataFormat类
-
格式化:
format()
; -
解析:
parse()
;//1.格式化:日期 --->字符串 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String format1 = sdf1.format(date);//格式化 System.out.println(format1);//2019-02-18 11:48:27 //2.解析:格式化的逆过程,字符串 ---> 日期 //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现), //否则,抛异常 Date date2 = sdf1.parse("2020-02-18 11:48:27"); System.out.println(date2); 复制代码
2.3.4 Calendar类:日历类
在很多日期工具类里面见过。
没用过。等用过了在写吧…
2.4 System类
-
System类
代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang
包。 -
由于**该类的构造器是
private
的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static
**的,所以也可以很方便的进行调用。 -
方法:
native long currentTimeMillis(); void exit(int status); void gc(); String getProperty(String key); ....我只用过System.out.println()和currentTimeMillis(); gc()是垃圾回收里面的,待我用过了在写吧... 复制代码
2.5 Math类
java.lang.Math
提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。
3. 注解
-
注解:其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。
-
通过使用 Annotation,可以在不改变原逻辑的情况下, 在源文件中嵌入一些补充信息。
-
注解在框架里面有大量的使用,在JavaEE里面很少。
-
学习Spring时会有大量的注解。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END