实用类
查询标题
枚举
枚举的关键字是enum
- enum定义的都是静态常量,都是英文字母大写
switch后面可跟(int char byte short String 枚举)
查看一周的日程安排
public class WeekDay {
public enum Week{
MON,TUE,WED,THU,FRI,SAT,SUN;
}
/**
* 查看日程安排
* @param args
*/
public void doWhat(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("星期日,休息!打篮球!");
break;
default:
System.out.println("地球上一个礼拜就7天");
}
System.out.println(day.ordinal());//获取下标
}
public static void main(String[] args) {
WeekDay w = new WeekDay();
w.doWhat(Week.THU);
Week week = Week.SUN;
w.doWhat(week);
}
}
包装类
包装类和基本数据类型的对应表
基本数据类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
Integer包装类的valueOf()方法
方法 | 说明 |
---|---|
Integer valueOf(int i) | 返回一个表示指定的int值的Integer对象 |
Integer valueOf(String s) | 返回保存指定的String值的Integer对象 |
Integer valueOf(String s,int radix) | **** |
装箱和拆箱
- 在JavaSE 5.0之后,编译器会自动完成基本数据类型和包装类的转换
- 包装类使用在成员变量中
Integer intObject = 5;//基本数据类型转换成包装类是装箱
int intValue = intObject;//包装类转换成基本数据类型是拆箱
Math类
它提供一些基本数学运算和几何运算
- 里面的方法都是静态的,是final类,没有子类
Math.abs(-10);//绝对值
Math.max(10,20);//最大值
Math.random();//随机数
这里重点说一下random()
- 取值范围在(0<=random()<1)
产生随机数(0~9中任意整数)的方法
int random = (int)(Math.random()*10)
产生随机数(1~10中任意整数)的方法
int random = (int)(Math.random()*10+1)
超市抽奖幸运会员
public class GoodLuck {
public static void main(String[] args) {
int random = (int)(Math.random()*10+1);//1~10之间的数字
System.out.println("超市会员号:");
System.out.println("黑进系统看看"+random);//查看系统给的数是多少
Scanner input = new Scanner(System.in);
System.out.println("请输入会员号:");
int num = input.nextInt();
int baiwei = num/100%10;//百位数的计算方法
if (baiwei == random) {//数字的百位数跟随机数相比较
System.out.println("恭喜你成为会员");
} else {
System.out.println("对不起,你不是会员");
}
}
}
操作字符串
String类的常用方法
①求字符串长度:字符串.length();
②字符串比较:字符串1.equals(字符串2);
忽略大小写的字符串比较:字符串1.equalsIgnoreCase(字符串2);
转换字符串中的英文为小写:toLowerCase()
转换字符串中的英文为大写:toUpperCase()
老套路,在代码中实现
- 要求:用户名大于等于3位,密码大于等于6位,
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String uname,pwd,pwd1;//用户名 第一次密码 第二次密码
System.err.println("请输入用户名:");
uname = input.next();
System.err.println("请输入密码:");
pwd = input.next();
System.err.println("请再次输入密码:");
pwd1 = input.next();
if (uname.length()>=3 && pwd.length()>=6) {//使用length()规定长度
if (pwd.equals(pwd1)) {//第一次密码和第二次密码进行比较
System.err.println("注册成功!记住密码!");
} else {
System.out.println("两次密码输入不匹配!");
}
} else {
System.err.println("用户名长度不够3位!密码长度不够6位!");
}
}
补充:
if (uname.equalsIgnoreCase(("TOM")) && pwd.equals("102030")) {//忽略大小写
System.err.println("登录成功!");
} else {
System.err.println("账号密码错误!");
}
再来个好玩的:
if (uname.toLowerCase().equals(("TOM").toLowerCase) && pwd.equals("102030")) {//猜猜这块是什么
System.err.println("登录成功!");
} else {
System.err.println("账号密码错误!");
}
if (uname.toUpperCase().equals(("tom").toUpperCase()) && pwd.equals("102030")) {//猜猜这块是什么
System.err.println("登录成功!");
} else {
System.err.println("账号密码错误!");
}
③字符串连接:字符串1.concat(字符串2);
String s = new String("你好");
String name = new String("张三!");
String sentence = s.concat(name);
System.out.println(s.concat(name));
第二种写法(个人觉得比较方便)
String name = "张三";
String sayHi = name + ",你好";
④字符串提取和查询(这里比较重要)
String a = "qwertyuioppoiuytrewq";
System.err.println(a.indexOf("q"));
System.out.println(a.indexOf("w"));//这两个是从前往后搜索“q”和“w”,char型也可以
System.err.println(a.lastIndexOf("q"));
System.out.println(a.lastIndexOf("w"));//这两个是从后往前搜索“q”和“w”,虽然是从后往前找,但下标还是从前往后数,同样char
System.err.println(a.substring(10));//字符串a从下标10开始提取
System.err.println(a.substring(10,15));//字符串a从下标10开始到下标15提取,在这里要注意(包头不包尾)
String i = " 123 ";
String j = i.trim();//去除字符串前后的空格
System.out.println(j);
endsWith//以什么为后缀
startsWiith//以什么为前缀,课本上的交作业系统就可以使用这个
⑤字符串拆分:字符串.split();
代码又来了
String words = "长亭外,古道边,芳草碧连天,晚风扶,柳笛声残,夕阳山外山";
String[] printword = new String[100];
System.out.println("--原歌词--\n"+words);
System.err.println("---修改之后的歌词---\n");
printword = words.split(",");//括号里的就是根据什么进行拆分,这里我们用的是“,”来拆分的
for (int i = 0; i < printword.length; i++) {
System.err.println(printword[i]);
}
}
StringBuffer类和StringBuilder类
其实StringBuffer和StringBuilder他们的方法都可以共用
所以就举一种栗子,反正是通用的
- 字符串1.toString(); 将StringBuffer类型转换成String类型
- 字符串.append(参数); 将参数连接到字符串后面,跟上面的“+=”和“concat()”性质是一样的,他们俩个的底层就是“append()"
- 字符串.insert(位置,参数); 将参数插入到字符串指定位置(但我自己实验的是这个下标的前面加)
它又来了:
StringBuffer sb = new StringBuffer("青春无悔");
String a = "!";
StringBuffer sb1 = sb.append("我心飞扬");//sb添加一个“我心飞扬”
System.err.println(sb1);
StringBuffer sb2 = sb1.append(a);//sb1添加“!”
System.out.println(sb2);
StringBuffer sb3 = sb2.insert(4, ",");//在下标为4的地方加个“,”
System.err.println(sb3);
String类、StringBuffer类和StringBuilder类对比:
- String:字符串常量
- StringBuffer:字符串变量,线性安全
- StringBuilder:字符串变量,线性不安全,但效率高
就先知道这些吧!学艺不精,还需修行。
这个好像是计算一串字符串中一共有点个相同的字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJ2w7wxz-1606703729481)(C:\Users\王始一\AppData\Roaming\Typora\typora-user-images\image-20201124182607646.png)]
使用java.util包中的常用类
日期操作
直奔主题
//获得当前的时间
Date date = new Date();
System.out.println(date);//获得的时间就不是我们平常看的时间,很别扭
//这个就很完美的解决看的别扭的问题
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:ms");//y-年 M-月 d-日 h-时 m-分 s-秒
Date data = new Date();
String str = format.format(data);
System.err.println(str);
//这两个都需要导包的
使用Calendar获取日期及星期
Calendar t = Calendar.getInstance();
System.err.println("今天是"+t.get(Calendar.YEAR)+"年"+(t.get(Calendar.MONTH)+1)+"月"+
t.get(Calendar.DAY_OF_MONTH)+"日");
System.out.println("今天是星期"+(t.get(Calendar.DAY_OF_WEEK)-1));
//YEAR:年
//MONTH:月
//DAY_OF_MONTH:一个月中的某天
//DAY_OF_WEEK:一个星期中的某天
这是题的答案,第二个有难度,题目是这天在这一年的第几周,很刁钻的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k9ntuBkX-1606703729483)(C:\Users\王始一\AppData\Roaming\Typora\typora-user-images\image-20201125162109440.png)]
Random类
nextInt() 随机生成一个数
nextInt(5) -->[0~5) 包括0不包括5 随机生成0~4的数,括号里面的数是个范围
创建Random还要导包 import java.util.Random
来看一下练习:
随机生成20个15以内大于或等于0的整数
import java.util.Random;
public class Demo {
public static void main(String[] args) {
Random rand = new Random();
for (int i = 0; i < 20; i++) {
int num = rand.nextInt(15);
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
}
}
- 切记一定要导包
不包括5 随机生成0~4的数,括号里面的数是个范围
创建Random还要导包 import java.util.Random
来看一下练习:
随机生成20个15以内大于或等于0的整数
import java.util.Random;
public class Demo {
public static void main(String[] args) {
Random rand = new Random();
for (int i = 0; i < 20; i++) {
int num = rand.nextInt(15);
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
}
}
- 切记一定要导包