2:Integer
2.1 Integer(构造方法)
下面我们来探讨基本类型包装类,它涉及到1个案例:猜数字。
来,我们一起看一下,在输入框里,我们要输入一个猜的数据,然后点击我猜这个按钮,和已经产生的数据进行比对,给出相应的提示即可。
而且呢,猜数字案例的基本逻辑,我们前面是讲解过的,只不过当时使用的是键盘录入数据,而这里我们采用的是在输入框里输入数据而已。
那我们为什么要学习基本类型包装类呢?
因为,在输入框里输入的数据,我们得到的是一个字符串数据,而实际比较的时候我们需要的是一个int类型的数据,所以,我们得想办法把字符串数据转换为int类型的数据。
为了实现这个效果,Java 就提供了基本类型包装类供我们使用。所以,我们说,将基本数据类型封装成对象的好处就是可以通过对象调用方法操作数据。
而我们常用的操作之一呢:就是用于基本数据类型与字符串之间的转换。
在这里呢,我们一起来看一下,八种基本数据类型和其对应的包装类类型
从名字上看,包装类类型就是把基本类型的第一个单词改为大写即可。
当然,这里也有两个比较特殊的,一个是 int 类型的包装类,一个是字符类型的包装类,它们的包装类名称是这个样子的,大家了解一下即可。
下面呢,我们以 Integer 举例来讲解字符串和 int 类型之间的相互转换,其他基本类型和字符串的转换方式类似,在使用的时候,大家参照 Integer 的使用即可。
而关于Integer类的学习呢,我们先到帮助文档中去查看,然后回来总结,最后到IDEA中去演示。
来,打开我们准备好的帮助文档,关于通过帮助文档查看Integer,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了Integer类之后,下面我们回到资料中总结一下:
Integer:
- Integer类在对象中包装基本类型int的值
构造方法:
- Integer(int value):根据 int 值创建 Integer 对象(过时)
- Integer(String s):根据 String 值创建 Integer 对象(过时)
成员方法:
- static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
- static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String
知道了Integer的构造方法后,我们到IDEA中去使用一下:
/* 构造方法 Integer(int value):根据 int 值创建 Integer 对象(过时) Integer(String s):根据 String 值创建 Integer 对象(过时) 成员方法 static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例 static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String */ public class IntegerDemo01 { public static void main(String[] args) { // //Integer(int value):根据 int 值创建 Integer 对象(过时) // Integer i1 = new Integer(100); // System.out.println(i1); // // //Integer(String s):根据 String 值创建 Integer 对象(过时) // Integer i2 = new Integer("100"); // System.out.println(i2); // static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例 // static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String Integer i1 = Integer.valueOf(100); Integer i2 = Integer.valueOf("100"); System.out.println(i1); System.out.println(i2); } }
2.2 Integer(int和String的相互转换)
来,继续啊,下面我们来学习int类型数据和String类型数据的相互转换,关于它们之间的相互转换,我们先到IDEA中去讲解,然后回来总结。
/* int和String的相互转换 */ public class IntegerDemo02 { public static void main(String[] args) { //int --- String int number = 100; //方式1 String s1 = number + ""; System.out.println(s1); //方式2 //static String valueOf(int i) String s2 = String.valueOf(number); System.out.println(s2); System.out.println("---------------"); //String --- int String s = "100"; //方式1:String --- Integer --- int Integer i = Integer.valueOf(s); //int intValue() 返回此值 Integer为 int int x = i.intValue(); System.out.println(x); //方式2 //static int parseInt(String s) int y = Integer.parseInt(s); System.out.println(y); } }
讲解完毕int类型和String类型的相互转换后,回到资料总结一下:
int 转换为 String
static String valueOf(int i):返回 int 参数的字符串表示形式。该方法是 String 类中的方法
String 转换为 int
static int parseInt(String s):将字符串解析为 int 类型。该方法是 Integer 类中的方法
好了,int类型数据和String类型数据的相互转换我们就先讲到这里。
2.3 GUI案例3(猜数字实现)
需求:根据下列要求,完成猜数字的逻辑
要求:
① 系统产生一个1-100之间的随机数
② 猜的内容不能为空
③ 每次根据猜的数字给出相应的提示
知道了猜数字案例的需求和要求后,下面我们到IDEA中去实现一下:
import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; /* 1:系统产生一个1-100之间的随机数 2:猜的内容不能为空 3:每次根据猜的数字给出相应的提示 */ public class GuessNumber { public static void main(String[] args) { //创建窗体对象 JFrame jf = new JFrame(); jf.setTitle("猜数字"); jf.setSize(400, 300); jf.setDefaultCloseOperation(3); jf.setLocationRelativeTo(null); jf.setAlwaysOnTop(true); jf.setLayout(null); //系统产生一个1-100之间的随机数 Random r = new Random(); int number = r.nextInt(100) + 1; //提示信息 JLabel messageLable = new JLabel("系统产生了一个1-100之间的数据,请猜一猜"); messageLable.setBounds(70, 50, 350, 20); jf.add(messageLable); //输入要猜的数字 JTextField numberField = new JTextField(); numberField.setBounds(120, 100, 150, 20); jf.add(numberField); //猜数字的按钮 JButton guessButton = new JButton("我猜"); guessButton.setBounds(150, 150, 100, 20); jf.add(guessButton); guessButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //猜的内容不能为空 String stringNumber = numberField.getText().trim(); if(stringNumber.equals("")) { JOptionPane.showMessageDialog(jf,"猜的数字不能为空"); return; } //每次根据猜的数字给出相应的提示 int guessNumber = Integer.parseInt(stringNumber); if(guessNumber > number) { JOptionPane.showMessageDialog(jf,"你猜的数字"+guessNumber+"大了"); numberField.setText(""); } else if(guessNumber < number) { JOptionPane.showMessageDialog(jf,"你猜的数字"+guessNumber+"小了"); numberField.setText(""); } else { JOptionPane.showMessageDialog(jf,"恭喜你猜中了"); } } }); jf.setVisible(true); } }
2.4 Integer(自动装箱和拆箱)
来,继续啊,下面我们来学习自动装箱和拆箱。
首先,我们来说一下什么是装箱和拆箱:
- 装箱: 把基本数据类型转换为对应的包装类类型
- 拆箱: 把包装类类型转换为对应的基本数据类型
了解了装箱和拆箱后,下面我们到 IDEA 中去演示一下:
/* 装箱:把基本数据类型转换为对应的包装类类型 拆箱:把包装类类型转换为对应的基本数据类型 */ public class IntegerDemo03 { public static void main(String[] args) { //装箱:把基本数据类型转换为对应的包装类类型 // Integer i = Integer.valueOf(100); Integer ii = 100; //Integer.valueOf(100); //拆箱:把包装类类型转换为对应的基本数据类型 ii += 200; /* ii = ii + 200; ii = ii.intValue() + 200; //自动拆箱 ii = 300; //Integer.valueOf(300); */ System.out.println(ii); } }
好了,自动装箱和拆箱我们就先讲到这里。
3:Date和SimpleDateFormat
3.1 Date(构造方法)
来,继续啊,下面我们来学习 Date 类和SimpleDateFormat类,它们涉及到两个案例:手机日期和时间显示和考勤查询
先来看手机日期和时间显示案例:获取当前时间,按照指定的格式显示在窗体上。
也就是在这里我们要进行把一个Date类型的数据,按照指定的格式,变成一个字符串数据显示出来。
再来看考勤查询案例,我们要通过输入的指定格式的日期字符串数据,得到Date类型的数据。
所以,我们学习Date类和SimpleDateFormat类的重点就是为了把Date类型数据和String类型数据之间进行按照指定格式进行转换。
首先呢,我们先来学习一下Date类,而关于Date类呢,我们先到帮助文档中去查看,然后回来总结,最后到IDEA中去演示。
来,打开我们准备好的帮助文档,关于通过帮助文档查看Date,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了Date类之后,下面我们回到资料中总结一下:
Date:
Date类表示特定的时刻,精度为毫秒
构造方法:
Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒
Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
知道了(的构造方法后,我们到IDEA中去使用一下:
import java.util.Date; /* 构造方法: Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒 Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00 */ public class DateDemo { public static void main(String[] args) { //Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒 Date d1 = new Date(); System.out.println(d1); //Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00 Date d2 = new Date(1000 * 60 * 60); System.out.println(d2); } }
而目前呢,Date类中没有我们要使用的成员方法,所以,我们也就不看它的成员方法了。
讲解完毕后,大家赶快动手练习一下吧。
3.2 SimpleDateFormat(Date和String的相互转换)
来,继续啊,下面我们来学习SimpleDateFormat这个类。
打开我们准备好的帮助文档,关于通过帮助文档查看SimpleDateFormat,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了SimpleDateFormat类之后,下面我们回到资料中总结一下:
SimpleDateFormat:
SimpleDateFormat 是一个用于以区域设置敏感的方式格式化和解析日期的具体类。我们重点学习日期格式化和解析
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组成部分的模式字母
常用的模式字母及对应关系如下:
- 举例: 2024年10月27日 11:11:11
- 模式: yyyy年MM月dd日 HH:mm:ss
构造方法:
SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化(从 Date 到 String ):
String format(Date date):将日期格式化成日期/时间字符串
解析(从 String 到 Date ):
Date parse(String source):从给定字符串的开始解析文本以生成日期
了解了SimpleDateFormat类,以及Date和String相互转换的方法后,我们到IDEA中去体验一下:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* 构造方法 SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式 SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式 格式化(从 Date 到 String ) String format(Date date):将日期格式化成日期/时间字符串 解析(从 String 到 Date ) Date parse(String source):从给定字符串的开始解析文本以生成日期 */ public class SimpleDateFormatDemo { public static void main(String[] args) throws ParseException { //格式化(从 Date 到 String ) Date d = new Date(); //SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式 // SimpleDateFormat sdf = new SimpleDateFormat(); //SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String s = sdf.format(d); System.out.println(s); System.out.println("-----------------"); //解析(从 String 到 Date ) String ss = "2021-10-27 11:11:11"; // SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dd = sdf2.parse(ss); System.out.println(dd); } }