集合泛型实用类
枚举
枚举指由一组固定的常量组成的类型
[Modifier]enum enumName{
enumContantName1
[,enumContantName2...[;]]
//[field,method]
}
-性别枚举
public enum Genders{
Male,Female
}
-枚举类型的变量
public class Student{
public Genders sex;
}
特点
类型安全、易于输入、代码清晰
Java API
常用Java API
java.lang ( Enum、包装类、Math、String、StringBuffer、System…)
java.util
java.io
java.sql
…
包装类
包装类把基本类型数据转换为对象
每个基本类型在java.lang包中都有一个相应的包装类
包装类的作用
提供了一系列使用的方法
集合不允许存放基本数据类型数据,存放数字时,要用包装类型
包装类的构造方法
1.所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
(1)public Type(type value)
Integer i = new Integer(1);
(2)除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
(3)public Type(String value)
Integer i = new Integer("123");
注意事项
1.Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
2.当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
常用方法
XXXValue(): 包装类转换成基本类型
Integer integerID = new Integer(25);
int intID = integerID.intValue();
toString(): 以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
String sex = Character.toString('男');
String id = Integer.toString(25);
String sex = '男'+"";
String id = 25+"";
parseXXX(): 把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
int num = Integer.parseInt("36");
boolean bool = Boolean.parseBoolean("false");
以上为
public static type parseType(String type)
valueOf()
(1)所有包装类都有如下方法(基本类型->包装类)
public static Type valueOf(type value)
Integer intValue = Integer.valueOf(21);
(2)除Character类外,其他包装类都有如下方法(字符串->包装类)
public static Type valueOf(String s)
Integer intValue = Integer.valueOf("21");
装箱和拆箱
基本类型和包装类的自动转换
Integer intObject = 5;
int intValue = intObject;
装箱:基本类型转换为包装类的对象
拆箱:包装类对象转换为基本类型的值
特点
1.JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
2.包装类并不是用来取代基本数据类型的
在基本数据类型需要用对象表示时使用
Math类
java.lang.Math提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)
Math.abs(-3.5); //返回3.5
Math.max(2.5,90.5); //返回90.5
int random = (int)(Math.random()*10); //生成一个0-9之间的随机数
Random类
生成随机数的其他方法
java.util.Random类
Random rand = new Random(); //创建一个Random对象
for(int i = 0;i < 20;i++){
int num = rand.nextInt(10);//返回下一个伪随机数,整形的
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
用同一个种子来初始化两个Random对象,然后用每个对象调用相同的方法,得到的随机数也是相同的
String类
生活中的字符串
频繁使用的字符串
“欢迎进入”
“Hello World”
“www.baidu.cn”
使用String对象存储字符串
String s = "Hello World";
String s = new String();
String s = new String("Hell World");
String类位于java.lang包中,具有丰富的方法
计算字符串的长度、比较字符串、连接字符串、提取字符串
length()方法
String类提供了length(),确定字符串的长度
返回字符串中 的字符数
equals()方法
String类提供了equals()方法,比较存储在两个字符串对象的内容是否一致
equals()方法比较原理
equals():检查组成字符串内容的字符是否完全一致
"=="和equals()有什么区别
==:判断两个字符在内存中的地址,即判断是否是同一个字符串对象
字符串比较的其他方法
equalsIgnoreCase()方法
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.equalsIgnoreCase("Tom") && password.equalsIgnoreCase("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
toLowerCase()
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.toLowerCase().equals(password) && password.equals("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
toUpperCase()方法
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.toUpperCase().equals(userName) && password.equals("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
字符串连接
方法一:使用"+"
方法二:使用String类的concat()方法
String s1 = "a"+"b";
s1 = s1.concat("ddd");
System.out.println(s1);
输出结果:
abddd
字符串常用提取方法
方法名 | 说明 |
---|---|
public int indexOf(int ch) | 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int indexOf(String value) | 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int lastIndexOf(int ch) | 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int lastIndexOf(String value) | 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex,int endindex) | 提取beginindex和endindex之间的字符串部分 |
public String trim() | 返回一个前后不含任何空格的调用字符串的副本 |
Calender类
获取当前日期
java.util.Date类:表示日期和时间
提供操作日期和时间各组成部分的方法
如何格式化日期
java.text.SimpleDateFormat类:用于定制日期时间的格式
//创建日期对象
Date date = new Date();
//定制日期格式
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = formater.format(date);
System.out.println(now);
Calendar类
抽象类,java.util.Calendar
用于设置和获得日趋/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历
方法或属性 | 说明 |
---|---|
int get(int field) | 返回给定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_WEEK | 指示一个星期中的某天 |
StringBuffer类
StringBuffer
对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率
声明
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer("aaa");
使用
sb.toString();//转化为String类型
sb.append("**");//追加字符串
sb.insert(1,"**");//插入字符串
String类 VS StringBuffer类
String是不可变对象
1.经常改变内容的字符串最好不要使用String
2.StringBuffer是可变的字符串
3.字符串经常改变的情况可使用StringBuffer,更高效
4.JDK5.0后提供了StringBuilder,等价于StringBuffer
案例
案例一
需求说明:
为大数据岗位课程三个学习阶段定义枚举:L1、L2、L3,分别表示第一、二、三阶段
编程输出每个单元的学习目标
L1:大数据开发工程师
L2:大数据挖掘工程师
L3:大数据架构师
-测试类
package hw1;
public class Test {
public static void main(String[] args) {
Course c = Course.L1;
switch(c) {
case L1:
System.out.println("大数据开发工程师");
break;
case L2:
System.out.println("大数据挖掘工程师");
break;
case L3:
System.out.println("大数据架构师");
break;
}
}
}
-枚举类
package hw1;
public enum Course {
L1,L2,L3
}
案例二
-测试类
package hw2;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名: ");
String userName = sc.next();
System.out.print("请输入密码: ");
String password = sc.next();
if(password.length() < 7 ) {
System.out.println("密码长度不能小于6位!");
}else{
System.out.println("注册成功!");
}
}
}
-管理类
package hw2;
/**
* 管理类
* @author admin
*
*/
public class ManagerSys {
private String userName;//用户名
private String password;//密码
public ManagerSys(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public ManagerSys() {
super();
// TODO Auto-generated constructor stub
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "ManagerSys [userName=" + userName + ", password=" + password + "]";
}
}
案例三
-测试类
package hw3;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名: ");
String userName = sc.next();
System.out.print("请输入密码: ");
String password = sc.next();
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.equalsIgnoreCase("Tom") && password.equalsIgnoreCase("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
}
}
-管理类
package hw3;
/**
* 管理类
* @author admin
*
*/
public class ManagerSys {
private String userName;//用户名
private String password;//密码
public ManagerSys(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public ManagerSys() {
super();
// TODO Auto-generated constructor stub
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "ManagerSys [userName=" + userName + ", password=" + password + "]";
}
}
案例四
-测试类
package hw4;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名: ");
String userName = sc.next();
System.out.print("请输入密码: ");
String password = sc.next();
/**
*equalsIgnoreCase()方法 忽略大小写
*/
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.equalsIgnoreCase("Tom") && password.equalsIgnoreCase("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
/**
* toLowerCase()方法
*/
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.toLowerCase().equals(password) && password.equals("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
/**
* toUpperCase()方法
*/
if(password.length() < 7 ) {
System.out.println("密码长度小于6位数,请重新输入!");
}
if(userName.toUpperCase().equals(userName) && password.equals("1234567")) {
System.out.println("登陆成功!");
}else {
System.out.println("登录失败!");
}
}
}
-管理类
package hw4;
/**
* 管理类
* @author admin
*
*/
public class ManagerSys {
private String userName;//用户名
private String password;//密码
public ManagerSys(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public ManagerSys() {
super();
// TODO Auto-generated constructor stub
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "ManagerSys [userName=" + userName + ", password=" + password + "]";
}
}
案例五
-测试类
package hw5;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("**欢迎进入注册系统**");
System.out.println();
do{
System.out.print("请输入用户名: ");
String userName = sc.next();
System.out.print("请输入密码: ");
String password = sc.next();
System.out.print("请再次输入密码: ");
String pwd = sc.next();
if(userName.length() <3 || password.length() <6 || pwd.length() < 6) {
System.out.println("用户名长度不能小于3,密码长度不能小于6!");
}else if(password.equals(pwd)){
System.out.println("注册成功!请牢记用户名和密码.");
break;
}
else {
System.out.println("两次输入的密码不相同!");
}
}while(true);
}
}
-管理类
package hw5;
/**
* 管理类
* @author admin
*
*/
public class ManagerSys {
private String userName;//用户名
private String password;//密码
public ManagerSys(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public ManagerSys() {
super();
// TODO Auto-generated constructor stub
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "ManagerSys [userName=" + userName + ", password=" + password + "]";
}
}
案例六
-测试类
package hw6;
import java.util.*;
public class Test {
public static void main(String[] args) {
System.out.println("--欢迎进入作业提交系统--");
Scanner sc = new Scanner(System.in);
do {
System.out.print("请输入Java文件名:");
String fileName = sc.next();
System.out.print("请输入你的邮箱:");
String emailAdd = sc.next();
String suffix = fileName.substring(fileName.length()-5);
int firstIndex = emailAdd.indexOf("@");
int secondIndex = emailAdd.indexOf(".");
if(suffix.equals(".java") && ( secondIndex >firstIndex )) {
System.out.println("文件名正确,E-mail正确");
System.out.println("作业提交成功!");
}else {
System.out.println("E-mail无效。");
System.out.println("作业提交失败!");
}
break;
}while(true);
}
}
案例七
-测试类
package hw7;
public class Test {
public static void main(String[] args) {
String poem = "长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
System.out.println("***原歌词格式***");
System.out.println("长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山");
System.out.println();
System.out.println("***拆分后歌词格式***");
String[] showPoem = poem.split(" ");//切割
for(String p : showPoem) {
System.out.println(p);
}
}
}
案例八
-测试类
package hw8;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String s = sc.next();
System.out.print("请输入要查找的字符:");
String check = sc.next();
int all = 0;
for(int i = 0,index = 0;i<s.length();i++) {
index = s.indexOf(check, index);
if(index == -1) {
System.out.println("查询失败!");
break;
}else if(index >= 0) {
index +=1;
all++;
}
}
System.out.println("“"+s+"”"+"中包含"+all+"个“"+check+"”。");
}
}
案例九
日期操作
需求说明:
1.获取当前时间,使用SimpleDateFormat以"年-月-日"方式显示
2.计算2020年4月6日是一年中的第几星期
package hw9;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
System.out.println("--------------");
//获取当前时间,以 年-月-日 显示
SimpleDateFormat ymd = new SimpleDateFormat("YYYY-MM-dd");
String s = ymd.format(d);
System.out.println(s);
System.out.println("--------------");
//计算2020年4月6日是一年中的几个星期
Calendar m = Calendar.getInstance();
m.set(2020,4,6);
System.out.println(m.get(Calendar.WEEK_OF_YEAR));
}
}
check, index);
if(index == -1) {
System.out.println(“查询失败!”);
break;
}else if(index >= 0) {
index +=1;
all++;
}
}
System.out.println("“"+s+"”"+“中包含”+all+“个“”+check+"”。");
}
}
### 案例九
日期操作
需求说明:
1.获取当前时间,使用SimpleDateFormat以"年-月-日"方式显示
2.计算2020年4月6日是一年中的第几星期
```JAVA
package hw9;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
System.out.println("--------------");
//获取当前时间,以 年-月-日 显示
SimpleDateFormat ymd = new SimpleDateFormat("YYYY-MM-dd");
String s = ymd.format(d);
System.out.println(s);
System.out.println("--------------");
//计算2020年4月6日是一年中的几个星期
Calendar m = Calendar.getInstance();
m.set(2020,4,6);
System.out.println(m.get(Calendar.WEEK_OF_YEAR));
}
}