实用类

实用类

查询标题

枚举

枚举的关键字是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);
	}
}

包装类

包装类和基本数据类型的对应表

基本数据类型包装类
byteByte
booleanBoolean
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble

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);
		}
	}
}
  • 切记一定要导包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值