目录
内容仅供学习交流,如有问题请留言或私信!!!!!
有空您就点点赞
1.枚举
枚举指由一组固定的常量组成的类型。
使用枚举的好处:类型安全,易于输入,代码清晰。
枚举使用关键字enum来创建,如下图所示:
我们经常把能够且便于一一列举的类型用枚举来表示。就比如:一周的星期、性别、月份……
eg:
枚举成员之间用,(逗号)隔开,enum Week为枚举的类型,{ }内为枚举类型的取值,简称枚举常量。
使用:
//用户一周做什么事(条件判断)
public class WeekDo {
//根据用户输入星期几,对用户要做的事情做一个提示
public void doWhat(int day) {
if(day>7 || day<1) {
System.out.println("参数错误,必须在1-7之间。");
return;
}
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("休息2");
break;
}
}
//使用枚举:根据用户输入星期几,对用户要做的事情做一个提示
public void doWhat2(Week day) {
switch (day) {
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("工作");
break;
case SAT:
System.out.println("休息");
break;
case SUN:
System.out.println("休息2");
break;
}
}
public static void main(String[] args) {
WeekDo week = new WeekDo();
week.doWhat(5);
week.doWhat2(Week.SUN);
}
}
2.包装类及其构造方法
- 包装类把基本数据类型转换为对象。
- 每个基本类型在 java.lang 包中都有一个相应的包装类
- 包装类的作用
- 提供相应的方法
- 集合无法存放基本数据类型,基本数据类型->包装类,放进去。
需要特别记忆的是下图的 Integer 和 Character ,其余的均为基本数据类型首字母大写。
包装类的构造方法:
- 所有包装类都可将与之对应的基本数据类型作为参数,来构造他们的实例
数据类型转换 :
// new 包装类(字符串) 字符串 ==> 包装类(char除外)
// 包装类.toString(基本类型) 基本类型 ==》字符串
// 包装类.parsexxx(字符串) 字符串 ==》基本类型
// new 包装类(基本类型) 基本类型 ==> 包装类
// 类名.xxxValue() 包装类 ==》 基本类型
// 包装类.valuOf(基本类型) 基本类型==》包装类
// 包装类.valueOf(字符串) 字符串 ==》基本类型(char除外)
int i = 6;
// new 包装类(基本类型)
Integer integer1 = new Integer(i);
// new 包装类(字符串)
Integer integer2 = new Integer("123");
System.out.println(integer2 + 1);
// 类名xxxvalue() 包装类 ==》 基本类型
Boolean b = new Boolean("true");
boolean bool = b.booleanValue();
System.out.println(b);// 包装类.toString(基本类型)
int a = 25;
String str = Integer.toString(a);
// 包装类.parsexxx(字符串)
int num = Integer.parseInt(str);// 包装类.valuOf(基本类型)
Integer num1 = Integer.valueOf(num);// 包装类.valuOf(基本类型)
Integer num2 = Integer.valueOf("1");
System.out.println(num2);
注意事项:
- Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false。
- 当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常。
装箱:基本类型转换为包装类的对象
拆箱:包装类对象转换为基本类型的值
包装类的特点:
- 包装类并不是用来取代基本数据类型的
- 在基本数据类型需要用对象表示时使用
- JDK1.5以后,允许基本数据类型和包装类型进行混合数学运算
3.Math类
常用:
java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数) 和PI(圆周率)。
System.out.println(Math.abs(-8.8)); //绝对值
System.out.println(Math.max(100,9)); //最大值
System.out.println(Math.min(100,9)); //最小值System.out.println(Math.random()); //随机数(0-1)
4.Random类
生成随机数的其他方法:java.util.Random类
Random rand=new Random(); //创建一个Random对象
for(int i=0;i<20;i++){//随机生成20个随机整数,并显示
int num=rand.nextInt(10);//返回下一个伪随机数,整型的
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
用同一个种子值来初始化两个Random 对象,然后用每个对象调用相同的方法,得到的随机数也是相同的。
5.String类
String类:位于java.lang 包中,被fifinal修饰,没有子类,具有丰富的方法。
常用方法:
String str = "zhangSaN";
str.length(); //获取字符串长度
str.equals("lisi"); //比较
str.equalsIgnoreCase("zhangSAN");//忽视大小写进行比较
str.toLowerCase(); //将字符串转为小写
str.toUpperCase(); //将字符串转为大写
str.concat("真帅"); //拼接字符串
str.indexOf("a"); //查找指定字符串出现的位置(下标),没找到返回-1
str.lastIndexOf("n");//查找指定字符串最后一次出现的位置
str.subSequence(3, 4);//截取字符串
str.trim(); //去除字符串两端的空格
str.split("\\|"); //分割字符串
str.charAt(4); //根据下标获得单个字符
str.endsWith(".com");//判断是否以指定后缀结束
str.getBytes(); //字符串转换字节数组
str.isEmpty(); //判断字符串长度是否为0
str.replace("zhangSaN", "张三");//根据指定字符替换所有内容(字符串)
str.replaceAll("\\d", "*");//根据指定字符替换所有内容(正则表达式)
split方法详解:分隔符可以是任意字符、符号、数字、字符串等。
特殊情况:
- 字符串开头有分隔符:开头产生一个空字符串,其余正常。
- 分隔符相互紧挨着:每两个分隔符产生一个空字符串,若有三个分隔符则会有2各空字符,以此类推。
- 字符串最尾部有分割符:末尾产生一个空字符串,其余正常。
split(String str, int limit)
- 如果 limit > 0,(从左到右)最多分割 n - 1 次,数组的长度将不会大于 n,结尾的空字符串不会丢弃。
- 如果 limit < 0,匹配到多少次就分割多少次,而且数组可以是任何长度。结尾的空字符串不会丢弃。
- 如果 limit = 0,匹配到多少次就分割多少次,数组可以是任何长度,并且结尾空字符串将被丢弃。
6.StringBuffer类
对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率。
声明:
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer("aaa");
部分使用:
sb.toString(); //转化为String类型
sb.append("**"); //追加字符串
sb.insert (1, "**"); //插入字符串
eg:
import java.util.Scanner;
//StringBuffer
// 一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
public class Test {
public static void main(String[] args) {
//StringBuffer
StringBuffer s = new StringBuffer("Hello");
System.out.println(s.length());
String news = s.toString();//StringBuffer - String
System.out.println(news);
s.append(" World!");
System.out.println(s);
s.insert(2, ",");
System.out.println(s);
// 分割字符串,将一个数字字符串转换为逗号分割的数字串,从右边开始每三个数字用逗号分隔开
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
StringBuffer number = new StringBuffer(sc.next());
for (int i = number.length() - 3; i >0 ; i = i-3) {
number.insert(i, ",");
}
System.out.println(number);
}
}
区别:
String:在字符串反复拼接时效率低
StringBuffer:线程安全,效率低(相对于StringBuilder)
StringBuilder:线程不安全,效率高(相对于StringBuffer)
7.操作日期时间
- 获取当前日期(需要进行导包)
- java.util.Date类:表示日期和时间
- 提供操作日期和时间各组成部分的方法
- java.text.SimpleDateFormat;类
- SimpleDateFormat:格式化日期对象
- java.util.Date类:表示日期和时间
创建日期:
//通过Date 、SimpleDateFormat 来操作时间
//获取当前日期
Date date = new Date();
System.out.println(date);
//定制日期格式化:年-月-日
//date转字符串
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStr = formater.format(date);
System.out.println(dateStr);
Calendar类:
抽象类,java.util.Calendar
用于设置和获取日期/时间数据的特定部分
方法或属性 | 说明 |
int get(int field) | 返回给定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_WEEK | 指示一个星期中的某天 |
//通过 Calendar 来操作日期时间
Calendar c = Calendar.getInstance();
System.out.println("今天是"+c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
//星期几
int week = c.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("今天星期:"+week);
总结
练习:这里写练习及链接等。