✨✨个人主页:沫洺的主页
📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏
📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏
📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏
💖💖如果文章对你有所帮助请留下三连✨✨
🍁日期工具类
1. 导入java.util包;
2. 构造Date、Calendar、SimpleDateFormat对象;
3. 调用时间工具类中的方法
Date
输出日期
package moming; import java.util.Date; public class Date1 { public static void main(String[] args) { Date date = new Date(); //构造时间对象 System.out.println(date); //输出日期 } }
Wed Aug 03 17:23:32 CST 2022
获取时间戳,将时间戳转换为Date
package moming; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Date1 { public static void main(String[] args) { Date date = new Date(); //构造时间对象 long longTime = date.getTime(); //调用getTime方法获取时间戳 System.out.println(longTime); //输出时间戳 Date date1 = new Date(longTime); //将时间戳转换为Date System.out.println(date1); //输出date1 } }
1659518612497 Wed Aug 03 17:23:32 CST 2022
SimpllDateFormat
格式化日期
package moming; import java.util.Date; public class Date1 { public static void main(String[] args) { Date date = new Date(); //构造时间对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //构造日期格式对象并初始化 String newDate = sdf.format(date); //调用format方法对date进行格式化 System.out.println(newDate); //输出日期 } }
2022-08-03 17:23:32
Calendar
将日历实例转换为Date
获取日历信息
package moming; import java.util.Date; public class Date1 { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); //获取日历实例 Date date2 = calendar.getTime(); //将日历实例转成Date System.out.println(date2); int yy = calendar.get(Calendar.YEAR); //年 int MM = calendar.get(Calendar.MONTH)+1; //月 int dd = calendar.get(Calendar.DATE); //日 int HH = calendar.get(Calendar.HOUR_OF_DAY); //时 int mm = calendar.get(Calendar.MINUTE); //分 int ss = calendar.get(Calendar.SECOND); //秒 System.out.printf("%d年%d月%d日 %d:%d:%d%n",yy,MM,dd,HH,mm,ss); } }
Wed Aug 03 17:23:32 CST 2022 2022年8月3日 17:23:32
补充获取时间的方法
package moming; import java.util.Calendar; import java.util.Date; public class Time2 { public static void main(String[] args) { //格式化 %n(换行) //%tF(年月日),%tT(时分秒),%tA(星期),%tp(上下午) //<(参数和前一个一致), 1$(参数和第一个一致) //0l代表1970年的起始日期 System.out.printf("%tF %<tT %1$tA %<tp%n",0l); //当前时间 System.out.printf("%tF %<tT %1$tA %<tp%n",new Date()); //当前日历 System.out.printf("%tF %<tT %1$tA %<tp%n",Calendar.getInstance()); //七天前 System.out.printf("%tF %<tT %1$tA %<tp%n",System.currentTimeMillis() - (1000*60*60*24*7)); //格式化年月日 System.out.printf("%tF %n%1$tY年%1$tm月%1$td日%n",System.currentTimeMillis()); } }
1970-01-01 08:00:00 星期四 上午 2022-08-03 19:38:31 星期三 下午 2022-08-03 19:38:31 星期三 下午 2022-07-27 19:38:31 星期三 下午 2022-08-03 2022年08月03日
解析日期
package moming; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Time3 { public static void main(String[] args) throws ParseException { //解析日期 String date = "2022年08月03日 20:56:31";//格式要保持一致 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); Date newDate = sdf.parse(date); System.out.printf("%tF %<tT %<tA %<tp",newDate); } }
2022-08-03 20:56:31 星期三 下午
🌺随机工具类
1. 导入java.util包;
2. 构造Random对象;
3. 调用随机工具类中的方法
随机ID,随机布尔,随机数(0~6)不包含6
package moming; import java.util.Random; import java.util.UUID; public class Random1 { public static void main(String[] args) { UUID id = UUID.randomUUID(); //创建随机ID对象 System.out.println(id); //输出ID System.out.println(id.toString().length()); //ID的长度 Random rand = new Random(); //随机类Random System.out.println(rand.nextBoolean()); //true false 真假随机 System.out.println(rand.nextInt(6)); //0 - 5随机整数 } }
39361f51-eb83-41c3-9d20-26e07c2ba9be 36 true 5
💐Math工具类
package moming; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; public class Mat { public static void main(String[] args) { //Π(3.141592...) System.out.println(Math.PI); //0~1之间随机数 System.out.println(Math.random()); //3的2次方 System.out.println((int) Math.pow(3, 2)); //四舍五入 System.out.println(Math.round(1.5)); //舍去小数位 System.out.println(Math.floor(1.9)); System.out.println((int) Math.floor(1.9)); //小数位补1 System.out.println(Math.ceil(1.1)); System.out.println(Math.round( Math.ceil(1.1))); //随机色 //RGB色彩空间或RGB色彩系统可根据Red,Green和Blue颜色的组合来构造所有颜色。 int red = (int)Math.round(Math.random()*256); int green = (int)Math.round(Math.random()*256); int blue = (int)Math.round(Math.random()*256); String color = String.format("#%02x%02x%02x%n", red, green, blue); System.out.println(color); //为了直观的感受随机色,这里画了一个圆来呈现 Random random = new Random(); //建立内存中的画布 BufferedImage bi = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB); //获取二维画笔 Graphics2D g2 = bi.createGraphics(); for (int i= 0;i<10;i++) { //获取颜色 red = (int)Math.round(Math.random()*256); green = (int)Math.round(Math.random()*256); blue = (int)Math.round(Math.random()*256); Color c = new Color(red, green, blue,100); g2.setColor(c); //画圆 g2.fillOval(random.nextInt(200), random.nextInt(200),100, 100); } //释放画笔的资源 g2.dispose(); //异常处理 try { //保存所画的img ImageIO.write(bi, "jpg", new File("01.jpg")); //自动运行 Runtime.getRuntime().exec("cmd /c 01.jpg"); } catch (IOException e) { e.printStackTrace(); } } }
3.141592653589793 0.8075906174171023 9 2 1.0 1 2.0 2 #b39b01
随机色的直观效果
🌿输入输出
Scanner 是 Java5 的新特征,在java.util包里,可以完成用户输入,使用如下:
1. 导入java.util包;
2. 构造Scanner对象,参数为标准输入流System.in
3. 获取输入的内容,以下是几个最基础,最常用的。
4. 最后System.out.println输出
String next()
它会自动地消除有效字符之前的空格,只返回输入的字符,不会得到带空格的字符串。
也就是说如果输入了一串字符,到了有空格的时候就会停止录入,只录入空格前面的东西,空格后面的东西(包括分隔的空格都会保留在缓存区域)
除了空格以外,Tab键和Enter键都被视为分隔符(结束符)。
package moming; import java.util.Scanner; public class ScDome { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入字符串:");//提示语句 String s1 = sc.next(); //接收键盘录入的字符串 System.out.println("接收的字符串:"+s1); //输出 sc.close(); //关闭Scanner对象 } }
输入字符串: abc def ghj 接收的字符串:abc
String nextLine()
它返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
也就是说输入一串字符,它就可以接受所有字符包括空格,但是遇到回车Enter就会停止录入,只录入前面的东西。
package moming; import java.util.Scanner; public class ScDome { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入一行字符串:"); String s2 = sc.nextLine(); //接收一行字符串 System.out.println("接收的一行字符串:"+s2); sc.close(); //关闭Scanner对象 } }
输入一行字符串: abc def ghj 123 接收的一行字符串: abc def ghj 123
int nextInt()
double nextDouble()
对于nextInt(),nextDouble()而言,可以看出返回值是int,double型,获取的是单个的数,都是取流中一个数,默认情况下以空格,回车,Tab为分隔符。取的值都是单个字符
package moming; import java.util.Scanner; public class IfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入整数:"); int i = sc.nextInt(); System.out.println("获取的整数:"+i); sc.close(); //关闭Scanner对象 } }
输入整数: 12 13 14 获取的整数:12
package moming; import java.util.Scanner; public class IfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入小数:"); double v = sc.nextDouble(); System.out.println("获取的整数:"+v); sc.close(); //关闭Scanner对象 } }
输入小数: 1.5 3.2 4.7 获取的整数:1.5
boolean hasNext()
检测是否有字符串输入,返回值为true和false
package moming; import java.util.Scanner; public class IfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入字符串(如果有输出true否则false):"); System.out.println(sc.hasNext()); sc.close(); //关闭Scanner对象 } }
输入字符串(如果有输出true否则false): asd true
boolean hasNextInt()
检测是否有整数输入,返回值为true和false
package moming; import java.util.Scanner; public class IfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入整数(如果是整数输出true否则false):"); System.out.println(sc.hasNextInt()); sc.close(); //关闭Scanner对象 } }
输入整数(如果是整数输出true否则false): l false
boolean hasNextDouble()
检测是否有小数输入,返回值为true和false
package moming; import java.util.Scanner; public class IfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //构建一个Scanner对象 System.out.println("输入小数(如果是小数输出true否则false):"); System.out.println(sc.hasNextDouble()); sc.close(); //关闭Scanner对象 } }
输入小数(如果是小数输出true否则false): 1.1 true
🌾分支语句
if分支
if语句有三种格式
格式1: if (条件表达式) { 语句体; } 格式2: if (条件表达式) { 语句体1; } else { 语句体2; } 格式3: if (条件表达式1) { 语句体1; } else if (条件表达式2) { 语句体2; } else if (条件表达式3) { 语句体3; } . . . else { 语句体n+1; }
格式1:判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。
格式2:首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。
格式3:
① 先判断条件1的值,如果为true则执行语句体1,分支结束;如果为false则判断条件2的值② 如果值为true就执行语句体2,分支结束;如果为false则判断条件3的值③ ...④ 如果没有任何条件为true,就执行else分支的语句体n+1。if-else语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。
switch分支
switch是匹配条件去执行分支, 适合做值匹配的分支选择,结构清晰,格式良好。
switch支持:byte short int char String 枚举
switch(表达式){ case 值1: 执行代码...; break; case 值2: 执行代码...; break; … case 值n-1: 执行代码...; break; default: 执行代码n; }
执行流程:① 先执行表达式的值,拿着这个值去与case后的值进行匹配。② 匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。③ 如果case后的值都不匹配则执行default代码。switch分支注意事项:① 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。② case给出的值不允许重复,且只能是字面量,不能是变量。③ 不要忘记写break,否则会出现穿透现象。④ 存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。
if语句和switch语句的区别:
- if其实在功能上远远强大于switch。
- if适合做区间匹配。
- switch适合做:值匹配的分支选择、代码优雅。
🍃循环语句
for 循环
控制一段代码反复执行很多次。
格式: for (初始化语句; 循环条件; 迭代语句) { 循环体语句(重复执行的代码); } 例: // 输出3次HelloWorld for (int i = 0; i < 3; i++) { System.out.println("Hello World"); }
while循环
while 循环格式与执行流程。
格式: 初始化语句; while (循环条件) { 循环体语句(被重复执行的代码); 迭代语句; } 例: int i = 0; while (i < 3) { System.out.println("Hello World"); i++; }
for语句和while语句的区别:
- 功能上是完全一样的,for能解决的while也能解决,反之亦然。
- 使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。
- for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。
do-while循环
先执行再判断循环条件。
格式: 初始化语句; do { 循环体语句; 迭代语句; } while (循环条件); 例: int i = 0; do { System.out.println(“Hello World!"); i++; } while( i < 3);
do-while循环的特点:一定会先执行一次循环体。
跳转控制语句
- break : 跳出并结束当前所在循环的执行。
- continue: 跳出当前循环的当次执行,进入下一次循环。