DAY10-加油!!!!
三种Date获取方法
第一代日期方法
package SysApp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Date1 {
public static void main(String[] args) throws ParseException {
//常用日期方法
//Date可以精确到毫秒
//SimpleDateFormat:格式化日期,可以将日期转为文本,文本转为日期
/*同一个字母,大写表示的范围更大
* y:年
* M:月
* w:年份中的周
* W:月份中的周
* D:年中的天数
* d:月份中的天数
* F:月份中的星期
* E;星期中的天数
* H:一天中的小时数
* */
//第一代日期方法
Date date=new Date();
System.out.println("当前系统时间:"+date);
//SimpleDateFormat用于格式化时间的一个类,创建好后
//调用对象的format方法即可
SimpleDateFormat s1=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E");
System.out.println(s1.format(date));
//还可以把文本转为date类型
//前提是你的这个字符串,必须样式和s1一样,不然会报错
String s2="2021年09月11日 13时29分13秒 星期一";
//此时会有异常,直接鼠标放上去添加一个就行了
Date s3=s1.parse(s2);
System.out.println(s3);
//如果你想让文本转的日期是中国的格式
System.out.println("转为中国格式:"+s1.format(s3));
}
}
第二代日期方法
package SysApp;
import java.util.Calendar;
public class Date2 {
public static void main(String[] args) {
//第二代日期,用到了日期类Calendar
//Calendar是一个抽象类并且构造器是private
//通过getInstance方法获取Calendar的值,而getInstance是静态的,因此用类名。方法名
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
//该类把属性都放在了类里面
System.out.println(Calendar.DAY_OF_MONTH);
System.out.println(calendar.get(Calendar.YEAR));
//获取月份要加1,因为月份是从0开始
System.out.println(calendar.get(Calendar.MONTH)+1);
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
//它没有提供格式化方法需要你自己组合
System.out.println(calendar.get(Calendar.YEAR)+" 年 "+(calendar.get(Calendar.MONTH)+1)+" 月 "+calendar.get(Calendar.DAY_OF_MONTH)+" 日");
//优点 可以自定义输出
//想要是24小时的小时,用Calendar.HOUR_OF_DAY;
}
}
第三代日期方法
package SysApp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class Date3 {
public static void main(String[] args) {
//第三代日期
//三种方法
LocalDateTime time=LocalDateTime.now();
LocalDate time1= LocalDate.now();
LocalTime time2=LocalTime.now();
System.out.println(time);
System.out.println(time1);
System.out.println(time2);
System.out.println("自定义输出:"+time.getYear()+"年 "+time.getMonthValue()+"月 "+ time.getDayOfMonth()+"日 "
+time.getHour()+"时 "+time.getMinute()+"分 "+time.getSecond()+"秒");
//同样这个类还提供了格式日期类,直接调用静态方法 返回值类型是DateTimeFormatter
//使用方法类似第一代
DateTimeFormatter date=DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒 E");
System.out.println(date.format(time));
}
}
system类
system.copy
package SysApp;
import java.util.Arrays;
public class Sysexmple {
public static void main(String[] args) {
//copy方法
int arr[]={1,2,3,4,5,6,7,8};
int p[] =new int [8];
//第一个参数,源数组名
//第二个参数,从原数组的哪个索引开始拷贝
//第三个参数。目的数组名
//第四个参数,拷贝的长度
System.arraycopy(arr,0,p,0,arr.length);
//循环遍历输出数组中的每个数字
for (int i = 0; i < p.length; i++) {
System.out.println(p[i]);
}
System.out.println("另外一种输出数组的方式:"+ Arrays.toString(p));
while (true){
System.out.println("你好");
System.out.println("输出1970/1/1距离现在多少毫秒:"+System.currentTimeMillis());
//0代表正常退出
//在此代码后面不可添加任何代码,因为程序在此结束。
System.exit(0);
}
}
}
2中大数类
package SysApp;
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigIntgerAndBigdecimal {
public static void main(String[] args) {
//首先这是2个类
BigInteger bigInteger = new BigInteger("123456789");
BigInteger bigIntegerson = new BigInteger("123456789");
BigDecimal bigDecimal = new BigDecimal("123456789.123456789");
System.out.println(bigInteger);
//加减乘除都必须使用对象的方法
System.out.println("加法运算"+bigInteger.add(bigIntegerson));
System.out.println("减法运算\t"+bigInteger.subtract(bigIntegerson)+"\t乘法运算\t"+bigInteger.multiply(bigIntegerson)
+"\t除法运算\t"+bigInteger.divide(bigIntegerson));
}
}
字符串指定位置翻转
package Day10;
import java.util.Arrays;
public class Hwork01 {
public static void main(String[] args) {
//先写一个交换全部位置的
String a = "abcdef";
System.out.println("交换前:" + a);
revers(a, 0, 5).toString();
System.out.println("交换后:" + revers(a, 1, 5).toString());
}
//反转字符串
//str是要反转的字符串
//start是起始位置
//end是结束位置
public static String revers(String str, int start, int end) {
//思路 取出每个字符,放在数组中
//String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。
// 该方法主要有如下两种重载形式:str.split(String sign,int limit)
//用一个中间变量交换首位位置就行了
char[] chars = str.toCharArray();
for (int i = start; i <= end; i++,end--) {
char temp = chars[i];
chars[i] = chars[end];
chars[end] = temp;
}
//String(char[])是String类中的构造器,作用是复制数组中的值到字符串中
/*下面就是创建String类的一个对象,调用构造器2种写法,都一样*/
/*
String a=new String(chars);
return a;
*/
return new String(chars);
}
}
注册实例,异常抛出
package Day10;
import java.util.Scanner;
import java.util.regex.Pattern;
public class Hwork02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("用户名:");
String name = s.next();
System.out.print("密码:");
String passwd = s.next();
System.out.print("邮箱:");
String email = s.next();
try {
test(name, passwd, email);
// 看有没有thorw出来的错误,没有就执行下面,有就进入catch
System.out.println("注册成功了");
} catch (Exception e) {
//把错误转为消息,用字符串输出
System.out.print(e.getMessage());
}
}
public static void test(String name, String pwd, String email) {
if (!(name.length() >= 2 && name.length() <= 4)) {
throw new RuntimeException("用户名长度为2-4位");
}
if (!(pwd.length() == 6 && isNumeric(pwd))) {
throw new RuntimeException("密码是6位且全部是数字");
}
//第一种判断字符在不在某个字符串内的方法,indexOf返回的是int类型,不再这个字符串就返回-1
int a1 = email.indexOf('@');//不再返回-1
int a2 = email.indexOf('.');
if (!(a1 > 0 && a1 < a2)) {
throw new RuntimeException("邮箱包含@和. , 且@在.前面。");
}
//第二种调用方法
//email.contains()方法返回的是bool类型,在就是true
if (!(email.contains("@") && email.contains(".") && isEmail(email))) {
throw new RuntimeException("邮箱包含@和. , 且@在.前面。");
}
}
public static boolean isNumeric(String str) {
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
//利用ASCII码判断是否全为数字
if (chars[i] < '0' || chars[i] > '9') {
return false;
}
/*另外一种写法也可以
charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
for (int j = 0; j < str.length(); j++) {
if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
return false;
}
}*/
}
//没有除了数字之外的 返回true
return true;
}
public static boolean isEmail(String email) {
//包含@和. 并且@在.的前面
char[] chars = email.toCharArray();
int flag = 0;
int flag2 = 0;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == '@') {
flag = i;
}
if (chars[i] == '.') {
flag2 = i;
}
}
return flag < flag2 ? true : false;
}
}
字符串的拆分,以及判断,统计大写字母、小写字母、数字个数
package Day10;
public class Hwork3 {
public static void main(String[] args) {
String n = "China1234592123cHINA@@@";
panduan(n);
}
public static void panduan(String str) {
if(str==null){
System.out.println("输入的字符串不能位空!");
return;
}
int Big = 0;
int small = 0;
int num = 0;
int other=0;
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (str.charAt(i)>='0' && str.charAt(i) <= '9') {
num += 1;
} else if (chars[i] >= 65 & chars[i] <= 90) {
Big += 1;
} else if(str.charAt(i)>='a' && str.charAt(i) <= 'z'){
small += 1;
}else{
other+=1;
}
}
System.out.println("大写字母:" + Big + "个" + "\n" + "小写字母:" + small + "个" + "\n" + "数字:" + num + "个"+"\n"+
"其他字符:" + other + "个");
}
}
集合
集合的2中遍历方法
package ListApp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class List001 {
public static void main(String[] args) {
//Collection 中文 集合
Book book1 = new Book("张三",18);
Book book2 = new Book("李四",22);
Book book3 = new Book("王二",48);
Book book4 = new Book("小明",28);
//Collection是ArrayList的父类
//引用类型arrayList 会先在编译类型中寻找有无这个方法
//如果有且子类中没有就会调用编译类型的方法即Collection的方法
//如果发现运行类型也有,就会优先调用运行类型的方法,称为:动态绑定
Collection arrayList = new ArrayList();
arrayList.add(book1);
arrayList.add(book2);
arrayList.add(book3);
arrayList.add(book4);
System.out.println(arrayList);
//使用iterator迭代器遍历集合
//迭代器类(Iterator)中有一个方法iterator(),其返回值就是一个迭代器对象
//调用arrayList的iterator方法,生成一个迭代器,传给引用类型iterator。
//Iterator是ArrayList的父类及接口,仅用于遍历集合
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
//此时指针在最下面 想要重置
Iterator iterator1 = arrayList.iterator();
//ok 重置完成
// Collection遍历方式二
//方法 arrayList.for 遍历集合
System.out.println("增强for循环遍历");
for (Object o : arrayList) {
System.out.println(o);
}
/*collection 扁你*/
}
}
class Book{
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Book(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
遍历练习
package ListApp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Dog {
public static void main(String[] args) {
Collection c=new ArrayList<>();
Cat c1 = new Cat("tom", 18);
Cat c2 = new Cat("jery", 28);
Cat c3 = new Cat("miko", 38);
Cat c4 = new Cat("rookie", 48);
c.add(c1);
c.add(c2);
c.add(c3);
c.add(c4);
//必须声明成迭代器 Iterator 否则永远出不来while循环
Iterator iterator = c.iterator();
System.out.println("调用对象的方法,遍历输出集合:");
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
//不能写成下面那个样,这样指针就一直在那个位置,永远不动
//System.out.println(c.iterator().next());
}
//直接强for循环输出
System.out.println("for输出:");
for (Object o : c) {
System.out.println(o);
}
}
}
class Cat{
private String name;
private int age;
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
}
集合中常用的方法
package ListApp;
import java.util.ArrayList;
import java.util.List;
public class List002 {
public static void main(String[] args) {
List arrayList = new ArrayList();
//List取出顺序和添加顺序一致,可重复
arrayList.add("zz");
arrayList.add("hhh");
arrayList.add("hhh");
System.out.println(arrayList);
//List的每个元素都有对应的索引
System.out.println(arrayList.get(1));
//插入索引为1的地方
arrayList.add(1,"adwda");
System.out.println(arrayList);
//在某个位置加入多个
ArrayList list = new ArrayList();
list.add("qweqweqweqw");
list.add("cxzcxzxzcxz");
list.add("zz");
arrayList.addAll(1,list);
System.out.println(arrayList);
//寻找索引位置的值
System.out.println(arrayList.get(3));
//寻找对象第一次出现的位置
System.out.println(arrayList.indexOf("zz"));
//寻找最后一次出现的位置
System.out.println(arrayList.lastIndexOf("zz"));
//移除指定位置的元素,并返回他的值
list.remove(0);
System.out.println(arrayList);
//替换
arrayList.set(0,"漳卅");
System.out.println(arrayList);
//前闭后开 返回一个子集合
List list1 = arrayList.subList(0, 2);
System.out.println(list1);
}
}
package ListApp;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class exmpel001 {
public static void main(String[] args) {
List arrayList = new ArrayList();
arrayList.add("hello");
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
arrayList.add("6");
arrayList.add("7");
arrayList.add("8");
//在某个位置插入一个元素NIHAO
arrayList.add(1,"NIHAO");
//获得第5个元素
Object o = arrayList.get(4);
//删除第六个元素
Object remove = arrayList.remove(6);
//修改第七个元素
arrayList.set(7,"china");
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
}
}
补充一个方法,将int转为字符串类型 + 一个空字符串“” 即可
end 加油 明天继续 再接再厉