一.包和导包
(1)包
其实就是文件夹
作用:对类进行分类管理
(2)包的定义格式
格式:package 包名;
注意:包名一般是公司域名反写,并且多级包用.分开
举例:www.baidu.com
范例:package com.baidu;
(3)导包的格式
格式:import 包名;
范例:import com.itheima.Student; import com.itheima.*;
二.Scanner类
(1)Scanner类说明:
一个简单的文本扫描程序,可以获取基本类型数据和字符串数据
(2)Scanner类的基本使用:
public class ScannerDemo {
public static void main(String[] args) {
//1.创建 Scanner 对象
Scanner sc = new Scanner(System.in);
//2.获取一个int类型的数据
System.out.println("请输入一个整数:");
int i = sc.nextInt();
//3.输出获取到的数据
System.out.println("你输入的数据是:" + i);
}
}
(3)Scanner类的练习
需求:键盘录入两个整数,求两个数据和,并在控制台输出求和结果
public class ScannerTest {
public static void main(String[] args) {
//1.创建键盘录入数据对象
Scanner sc = new Scanner(System.in);
//2.通过键盘录入数据对象调用nextInt()方法获取数据
System.out.println("请输入第一个整数:");
int firstNumber = sc.nextInt();
System.out.println("请输入第二个整数:");
int secondNumber = sc.nextInt();
//3.对获取的两个整数求和
int sum = firstNumber + secondNumber;
//4.在控制台输出求和结果
System.out.println("求和结果是:" + sum);
}
}
三.Random类
(1)Random类描述
该类的实例用于生成随机数
(2)Random基本使用
public class RandomDemo {
public static void main(String[] args) {
//1.创建一个新的随机数生成器
Random r = new Random();
//2.如何获取1-100之间的随机数呢?
int number = r.nextInt(100) + 1;
System.out.println(number);
}
}
(3)Random类的练习
系统自动产生一个1-100之间的整数,使用程序实现猜这个数字是多少?
public class RandomTest {
public static void main(String[] args) {
//1.使用Random获取一个1-100之间的整数
Random r = new Random();
int number = r.nextInt(100) + 1;
System.out.println("系统已经产生了一个1-100之间的整数");
while (true) {
//2.使用Scanner实现键盘录入猜的数据值
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sc.nextInt();
//2.实现猜数字,并给出对应的提示
if (guessNumber > number) {
System.out.println("你猜的数据" + guessNumber + "大了");
} else if (guessNumber < number) {
System.out.println("你猜的数据" + guessNumber + "小了");
} else {
System.out.println("恭喜你猜中了");
break;
}
}
}
}
四.String
4.1 String概述:
String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。
4.2 构造方法:
String():初始化新创建的 String对象,使其表示空字符序列
String(String original):初始化新创建的String对象,使其表示与参数相同的字符序列
4.3成员方法
int length():返回此字符串的长度
boolean equals(Object anObject):将此字符串与指定的对象进行比较
boolean equalsIgnoreCase(String anotherString):将此 String与另一个 String比较,忽略了大小写
String trim():返回一个字符串,其值为此字符串,删除了所有前导和尾随空格
4.4 String简单案例(手动尝试3遍)
public class StringDemo01 {
public static void main(String[] args) {
//1.初始化新创建的 String对象,使其表示空字符序列
String s1 = new String();
System.out.println(s1);
//2.初始化新创建的String对象,使其表示与参数相同的字符序列
String s2 = new String("itheima");
System.out.println(s2);
//3.Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例
String s3 = "itheima";
System.out.println(s3);
//4.返回此字符串的长度
System.out.println(s1.length());
String s1 = "itheima";
String s2 = "itheima";
String s3 = "Itheima";
String s4 = " itheima ";
String s5 = "it heima";
//5.将此字符串与指定的对象进行比较
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
//6.将此 String与另一个 String比较,忽略了大小写
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-------------------");
//7.返回一个字符串,其值为此字符串,删除了所有前导和尾随空格
System.out.println(s4.trim());
System.out.println(s5.trim());
}
}
4.5 用户登录综合案例练习(手动尝试3遍)
具体要求:
1:已知的用户名和密码
用户名:admini
密码:123456
2:用户名和密码的长度都是6-12位
3:点击登录按钮
先判断输入的用户名和密码是否符合要求
再判断用户登录是否成功
代码实现:
public class UserLogin {
public static void main(String[] args) {
//1.创建窗体对象并设置窗体信息
JFrame jf = new JFrame();
jf.setTitle("用户登录");
jf.setSize(400, 300);
jf.setDefaultCloseOperation(3); //设置窗体关闭时默认操作整数3表示:窗口关闭时退出应用程序
jf.setLocationRelativeTo(null); //设置位置,值为null,则窗体位于屏幕中央
jf.setAlwaysOnTop(true); //设置此窗口是否应始终位于其他窗口之上
jf.setLayout(null); //取消窗体的默认布局
//2.显示用户名文本
JLabel usernameLable = new JLabel("用户名");
usernameLable.setBounds(50, 50, 50, 20);
jf.add(usernameLable);
//3.用户名输入框
JTextField usernameField = new JTextField();
usernameField.setBounds(150, 50, 180, 20);
jf.add(usernameField);
//4.显示密码文本
JLabel passwordLable = new JLabel("密码");
passwordLable.setBounds(50, 100, 50, 20);
jf.add(passwordLable);
//5.密码输入框
JPasswordField passwordField = new JPasswordField();
passwordField.setBounds(150, 100, 180, 20);
jf.add(passwordField);
//6.登录按钮
JButton loginButton = new JButton("登录");
loginButton.setBounds(50, 200, 280, 20);
jf.add(loginButton);
/*** 7. 实现登录逻辑代码 */
String name = "admini";
String pwd = "123456";
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//1.获取用户输入的用户名和密码
String username = usernameField.getText();
String password = passwordField.getText();
//2.先判断输入的用户名和密码是否符合要求
//用户名和密码的长度都是6-12位
if(username.length()<6 || username.length()>12) {//静态的成员方法和成员变量是可以通过类名访问的
JOptionPane.showMessageDialog(jf,"用户名的长度是6-12位,请重新输入");
usernameField.setText("");
return;
}
if(password.length()<6 || password.length()>12) {
JOptionPane.showMessageDialog(jf,"密码的长度是6-12位,请重新输入");
passwordField.setText("");
return;
}
//3.再判断用户登录是否成功
if(username.equals(name) && password.equals(pwd)) {
JOptionPane.showMessageDialog(jf,"登录成功");
usernameField.setText("");
passwordField.setText("");
} else {
JOptionPane.showMessageDialog(jf,"用户名或者密码有误");
}
}
});
//8.设置窗体显示
jf.setVisible(true);
}
}
4.6 聊天室实现(手动尝试3遍)
需求:根据下列要求,完成聊天室的逻辑
要求:
① 把文本框的内容发送到文本域中
② 每次发送的文本内容不带前后空格
③ 多次发送的内容在文本域以追加的方式呈现
④ 清空聊天就是把文本域的内容设置为空
public class ChatRoom {
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);
//显示聊天信息的文本域
JTextArea messageArea = new JTextArea();
messageArea.setBounds(10, 10, 360, 200);
jf.add(messageArea);
//输入聊天信息的文本框
JTextField messageField = new JTextField();
messageField.setBounds(10, 230, 180, 20);
jf.add(messageField);
//发送按钮
JButton sendButton = new JButton("发送");
sendButton.setBounds(200, 230, 70, 20);
jf.add(sendButton);
//清空聊天按钮
JButton clearButton = new JButton("清空聊天");
clearButton.setBounds(280, 230, 100, 20);
jf.add(clearButton);
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取文本框的内容
//每次发送的文本内容不带前后空格
String message = messageField.getText().trim(); //链式调用
messageField.setText("");
//把文本框的内容发送到文本域中
//多次发送的内容在文本域以追加的方式呈现
messageArea.append(message+"\n");
}
});
clearButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//清空聊天就是把文本域的内容设置为空
messageArea.setText("");
}
});
jf.setVisible(true);
}
}
五.基本类型包装类
将基本数据类型封装成对象的好处在于可以在对象中定义方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
byte–> Byte
short–> Short
int–> Integer
long–> Long
float–> Float
double–> Double
char–> Character
boolean–> Boolean
5.1 Integer
Integer类在对象中包装基本类型int的值
成员方法:
static Integer valueOf(int i):返回表示指定的 int 值的 Integer 实例
static Integer valueOf(String s):返回一个保存指定值的 Integer 对象 String
int和String的相互转换:
static String valueOf(int i):返回 int 参数的字符串表示形式。该方法是 String 类中的方法
static int parseInt(String s):将字符串解析为 int 类型。该方法是 Integer 类中的方法
基本使用:
public class IntegerDemo01 {
public static void main(String[] args) {
Integer i1 = Integer.valueOf(100);
Integer i2 = Integer.valueOf("100");
System.out.println(i1);
System.out.println(i2);
//int->String
int number = 100;
//方式1
String s1 = number + "";
//方式2
String s2 = String.valueOf(number);
//String->int
String s = "100";
//方式1:
Integer i = Integer.valueOf(s);
int x = i.intValue();
//方式2
//static int parseInt(String s)
int y = Integer.parseInt(s);
}
}
自动装箱和拆箱:
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
public class IntegerDemo03 {
public static void main(String[] args) {
//装箱:把基本数据类型转换为对应的包装类类型
Integer ii = 100; //Integer.valueOf(100);
//拆箱:把包装类类型转换为对应的基本数据类型
ii += 200;
/*
ii = ii + 200;
ii = ii.intValue() + 200; //自动拆箱
ii = 300; //Integer.valueOf(300);//自动装箱
*/
System.out.println(ii);
}
}
5.2 猜数字实现(手动尝试3遍)
需求:根据下列要求,完成猜数字的逻辑
要求:
① 系统产生一个1-100之间的随机数
② 猜的内容不能为空
③ 每次根据猜的数字给出相应的提示
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);
}
}
六.Date
Date类表示特定的时刻,精度为毫秒
构造方法
Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒
Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
Date案例:
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);
}
}
七.SimpleDateFormat
SimpleDateFormat 是一个用于以区域设置敏感的方式格式化和解析日期的具体类。我们重点学习日期格式化和解析
常用的模式字母及对应关系如下:
y 年
M 月
d 日
H 时
m 分
s 秒
构造方法:
SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化(从 Date 到 String ):
String format(Date date):将日期格式化成日期/时间字符串
解析(从 String 到 Date ):
Date parse(String source):从给定字符串的开始解析文本以生成日期
7.2 SimpleDateFormat使用案例
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException { //throws ParseException抛出异常后面详讲
//格式化(从 Date 到 String )
Date d = new Date();
//构造一个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");
Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
八 案例练习
8.1 手机日期和时间显示实现
需求:根据下列要求,完成手机日期和时间显示
要求:
① 以现在的时间根据格式分别获取日期和时间显示
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ShowDateTime {
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);
//提示日期
JLabel dateLable = new JLabel("日期");
dateLable.setBounds(50, 50, 100, 20);
jf.add(dateLable);
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String dateString = sdf.format(d);
//按照格式显示日期的字符串
JLabel showDateLable = new JLabel(dateString);
showDateLable.setBounds(50, 80, 200, 20);
jf.add(showDateLable);
//提示时间
JLabel timeLable = new JLabel("时间");
timeLable.setBounds(50, 150, 100, 20);
jf.add(timeLable);
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
String timeString = sdf2.format(d);
//按照格式显示时间的字符串
JLabel showTimeLable = new JLabel(timeString);
showTimeLable.setBounds(50, 180, 200, 20);
jf.add(showTimeLable);
jf.setVisible(true);
}
}