实用类
常用JavaAPI:
- java.lang:(高频使用,默认导入)
- Enum、包装类、Math、String、StringBuffer、System
- java.util:(接口、类—工具类)
- java.io:(输入输出)
- java.sql:(数据库)
枚举:(enum)
-
java.lang.Enum
-
指由一组固定的常量组成的类型(通过举例相类似的数据而组成的类型)
-
enum定义枚举
//性别枚举类型
public enum Genders {男,女
}
public class Student {public Genders sex;//性别public static void main(String[] args) {Student stu = new Student();//枚举使用后,保证了sex的正确赋值stu.sex = Genders.男;}
}
- 优势:
- 类型安全
- 易于输入、赋值
- 代码清晰
包装类:Object
- java.lang.Object
- 每个基本类型在java.lang包中都有一个相应的包装类
- 作用:
- 提供了一系列对应的方法
- 集合不允许存放基本数据类型。存放数字,要用包装类
基本数据类型 | 对应的包装类 | 父类 |
---|---|---|
byte | Byte | Number |
short | Short | Number |
int | Integer | Number |
long | Long | Number |
char | Character | Object |
float | Float | Number |
double | Double | Number |
boolean | Boolean | Object |
-
所有的包装类都可将与之对应的基本数据类型做参数
-
包装类的两种构造方法
-
参数为基本数据类型
int iNum = 9;Integer i = new Integer(iNum);double dNum = 9.8;Double d = new Double(dNum);char cNum = 'c';Character c = new Character(cNum);float fNum = 9.8f;Float f = new Float(fNum);boolean bNum = true ;Boolean b = new Boolean(bNum);
-
参数为字符串
- 当Number类型的包装类构造方法参数为字符串时,字符串必须是能转换为Number的字符串,且字符串不能为null,否则会NumberFormatException
Integer i2 = new Integer("123");System.out.println(i2+1);//124,不是1231Integer i3 = new Integer("love");System.out.println(i3+1);//124,不是1231Double d2 = new Double(12.2);System.out.println(d2+1);//Boolean类型的构造方法参数为字符串时,除了“true”(不区分大小写)之外的其他字符串,结果都为falseBoolean b2 = new Boolean("true");System.out.println(b2);//Character没有带字符串作为参数的构造方法,如下写法将不能编译//Character c2 = new Character("a");
-
-
包装类的常用方法
-
XXXValue():包装类转换成基本类型
Integer i = new Integer(23);
int ii = i.intValue();
-
toString():基本类型转换成字符串
String sex = Character.toString(‘男’);
String id = Integer.toString(25);
public class Test {public static void main(String[] args) {//XXXValue():包装类——>基本数据类型Integer i = new Integer(100);int iNum = i.intValue();Boolean b = new Boolean(true);boolean b2 = b.booleanValue();//toString():基本数据类型——>字符串int num = 100;String sNum = Integer.toString(num);boolean b3 = true;String s = Boolean.toString(b3);//常用方法:基本数据类型——>字符串;比toString()更常用String sNum2 = 100+"";String s2 = true+"";} }
-
parseXXX():字符串转换成基本类型(除Character)
int num = Integer.parseInt(“36”);
boolean b = Boolean.parseBoolean(“false”);
public class Test {public static void main(String[] args) {//parseXXX():字符串——>基本数据类型String age = "18";int ageNum = Integer.parseInt(age);String score = "98.2";double score2 = Double.parseDouble(score);//编译报错:Character不存在parseXXX这个方法 // String sex = "女"; // char cSex = Character.parseChar(sex); } }
-
valueOf():
-
基本类型==>包装类
Integer i = Integer.valueOf(21);
-
字符串==>包装类(除Character外)
Integer i = Integer.valueOf(“21”);
public class Test {public static void main(String[] args) {//valueOf(基本数据类型):基本数据类型——>包装类int j = 90;Integer j1 = Integer.valueOf(j);char sex = '男';Character cSex = Character.valueOf(sex);//valueOf(字符串):字符串——>包装类String m = "123";Integer m1 = Integer.valueOf(m);} }
-
-
-
装箱和拆箱
装箱:基本类型==>包装类
拆箱:包装类==>基本类型
-
基本类型和包装类的自动转换
Integer i = 5;
int ii = i;
-
import java.util.*;
//装箱和拆箱
public class Test3 {
public static void main(String[] args) {
//包装类——>基本数据类型 自动转换–>拆箱
Integer i = new Integer(100);
//int iNum = i.intValue();
int iNum = i;//拆箱
System.out.println(iNum);
//基本数据类型——>包装类 自动转换-->装箱int j = 90;Integer j1 = j;//Integer j1 = Integer.valueOf(j);System.out.println(j1);//装箱//集合中只能存储包装类型,不能存储基本类型/*List list = new ArrayList();int num = 100;Integer numI = new Integer(num);list.add(numI);*/List list = new ArrayList();list.add(100); //int 100-->装箱Integer
}
}
##### ==*==**==包装类并不是用来替代基本数据类型的,只有基本数据类型需要用<u>*对象*</u>表示时才使用包装类==**# Math类* java.lang.Math
* 提供了常用的
* ==数学运算方法==
* ==两个静态常量==* **E(自然对数的底数)*** **PI(圆周率)**```java
//Math类常用方法
public class LuckyCard {public static void main(String[] args) {//提供了常用的数学运算的功能System.out.println(Math.abs(-8.8));System.out.println(Math.max(100,12));System.out.println(Math.min(43.3,32.3));//生成0.0(包括)--1.0之间的随机数System.out.println(Math.random());//生成一个0--9之间的随机数int i = (int)(Math.random()*10);System.out.println(i);}
}
Random类:(随机数)
-
java.util.Random
-
Random(种子);
-
相同的种子构造的Random对象,生成的随机数是一样的
import java.util.Random;public class RandomDemo {public static void main(String[] args) {//创建随机数生成器//随机数生产器的种子不同,每次生产的随机不同Random random = new Random(500);Random random1 = new Random(500);//常用写法1:/*Random random = new Random();*///常用写法2:// Random random = new Random(时间的毫秒);//生成随机数//System.out.println(random.nextInt());//生成一个int范围内的随机整数System.out.println(random.nextInt(10));//生成一个0-10范围内的随机整数System.out.println(random1.nextInt(10));//生成一个0-10范围内的随机整数}}
字符串
String
-
java.lang.String
-
String类的**length()**方法
- 返回字符串的字符数
import java.util.*; //用户注册,密码长度不能小于6位 public class Register {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String name = scanner.next();System.out.println("请输入密码:");String pwd = scanner.next();if (pwd.length() < 6){System.out.println("注册密码不能小于六位");}else{System.out.println("注册成功!");}} }
equals()
-
String类的**equals()**方法
-
比较存储在两个字符串对象的内容是否一致
-
字符内容需完全一致,区分大小写
-
字符串比较方法:
-
equals() 比较字符串内容是否相等
-
== 比较两个字符串的内存地址是否相等,比较字符串是否为同一对象
//创建了4个对象
String s1 = “hello”;//指向的是堆中的对象,创建了两个对象,字符串池hello对象,堆中hello对象
String s2 = new String(“Hello”);//指向的是堆中的对象,创建了两个对象,字符串池Hello对象,堆中Hello对象
System.out.println(s1.equals(s2));//false
System.out.println(s1==s2);//false
-
import java.util.Scanner; //字符串 equals()方法 public class Login {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String name = scanner.next();System.out.println("请输入密码:");String pwd = scanner.next();//假设数据库已经存储了用户注册成的用户名、密码if (name.equals("TOM") && pwd.equals("1234567")){System.out.println("登录成功");}else{System.out.println("用户名或密码不一致!");}//以前学习比较方法,基本数据类型 == 值是否相等/* int i = 8;int j = 8;System.out.println(i==j);*///-----------------------------------------------------//----------------------------------------------------//字符串比较方法:equals() 比较字符串内容是否相等// == 比较两个字符串的内存地址是否相等,比较字符串是否为同一对象//创建了1个对象/* String s1 = "hello";String s2 = "hello";System.out.println(s1.equals(s2));//trueSystem.out.println(s1==s2);//true,此时s1和s2都指向字符串池中的对象*//* //创建了2个对象String s1 = "hello";//指向的是字符串池中的对象String s2 = new String("hello");//指向的是堆中的对象System.out.println(s1.equals(s2));//trueSystem.out.println(s1==s2);//false *//* //创建了3个对象String s1 = "hello";//指向的是字符串池中的对象String s2 = new String("Hello");//指向的是堆中的对象,创建了两个对象,字符串池Hello对象,堆中Hello对象System.out.println(s1.equals(s2));//falseSystem.out.println(s1==s2);//false*///创建了4个对象String s1 = "hello";//指向的是堆中的对象,创建了两个对象,字符串池hello对象,堆中hello对象String s2 = new String("Hello");//指向的是堆中的对象,创建了两个对象,字符串池Hello对象,堆中Hello对象System.out.println(s1.equals(s2));//falseSystem.out.println(s1==s2);//false} }
-
equalsIgnoreCase():
-
不区分大小写
-
toLowertCase():转换为小写
-
toUpperCase():转换成大写
Scanner scanner = new Scanner(System.in);System.out.println("请输入用户名:");String name = scanner.next();System.out.println("请输入密码:");String pwd = scanner.next();//假设数据库已经存储了用户注册成的用户名、密码//if (name.toLowerCase().equals("TOM".toLowerCase()) && pwd.equals("1234567")){//if (name.toUpperCase().equals("TOM".toUpperCase()) && pwd.equals("1234567")){if (name.equalsIgnoreCase("TOM") && pwd.equals("1234567")){System.out.println("登录成功");}else{System.out.println("用户名或密码不一致!");}
trim():
- 去掉字符串两端空格
//去掉字符串两端空格的方法:trim()String name = " admin ";System.out.println(name.trim());//字符串连接String s1 = "hello";String s2 = "world!";System.out.println(s1+s2);
练习:
import java.util.Scanner;//会员注册
public class Register {//验证会员信息(用户名不能低于3位数,密码不能低于6位,两次输入密码必须相同public boolean verify(String name,String pwd1,String pwd2){boolean flag = false;//用户注册是否成功if (name.length()<3 || pwd1.length()<6){System.out.println("用户名长度不能小于3,密码长度不能小于6");}else if (!pwd1.equals(pwd2)){System.out.println("两次输入的密码不一致");}else{System.out.println("注册成功,请牢记用户名和密码");flag = true;}return flag;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String name,pwd1,pwd2;//用户名、密码、重复密码boolean flag;System.out.println("---------------欢迎进入用户系统--------------");Register register = new Register();do {System.out.println("请输入用户名:");name = scanner.next();System.out.println("请输入注册密码:");pwd1 = scanner.next();System.out.println("请确认密码:");pwd2 = scanner.next();flag = register.verify(name,pwd1,pwd2);}while (!flag);}
}
提取方法
方法名 | 说明 |
---|---|
public int indexOf(int ch) | 搜索第一个出现的字符ch,如果没有找到,返回-1 |
public int indexOf(String value) | 搜索第一个出现的字符字符串value,如果没有找到,返回-1 |
public int lastIndexOf(int ch) | 搜索最后一个出现的字符ch,如果没有找到,返回-1 |
public int lastIndexOf(String value) | 搜索最后一个出现的字符串value,如果没有找到,返回-1 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex,int endindex) | 提取beginindex和endindex之间的字符串部分 |
public String trim() | 返回一个前后不含任何空格的调用字符串的副本 |
//获取字符串中特定字符串位置String s = "hello world!";//indexOf():查找某个字符串在整个字符串中第一次出现的位置//字符串下标从0开始int index = s.indexOf("o");System.out.println(index);//查找不到位置,返回-1int index2 = s.indexOf("yes");System.out.println(index2);//截取特定字符串内容//substring(index):从index开始截取,一值截到字符串末尾String result = s.substring(4);System.out.println(result);//substring(index1,index2):从index1截取到index2位置,但不包括index2String result2 = s.substring(4,8);System.out.println(result2);
String word = "Hello, ";word = word.trim();String s1 = word.concat("小鱼儿!");int inde = s1.indexOf(',');int inde2 = s1.indexOf('!');System.out.println(s1.substring(inde+1,inde2));//小鱼儿
拆分:split()
System.out.println("---------------------原歌词--------------------");String song = "长亭外 古道边 芳草碧连天 晚风拂柳笛声残 夕阳山外山";System.out.println(song);//把字符串拆分---> String[]String[] songs = song.split(" ");System.out.println("---------------------拆分后--------------------");for (String s:songs) {System.out.println(s);}
StringBuffer
- 对字符串频繁修改时,使用StringBuffer类效率高
- 常用方法:
- s.toString():转化为String类型
- s.append():追加字符串
- s.insert():插入字符串
//StringBuffer操作字符串时,操作的是字符串的本身,适用于频繁操作字符串StringBuffer s = new StringBuffer("hello");System.out.println(s.length());String news = s.toString();//StringBuffer -->StringSystem.out.println(news);s.append("world");System.out.println(s);s.insert(5,",");//在特点位置插入特定字符串System.out.println(s);
String VS StringBuffer
- String操作字符串时,操作的是字符串的一个副本,字符串本身内容没有修改
- StringBuffer操作字符串时,操作的是字符串的本身,适用于频繁操作字符串
日期和时间
Date
- java.util.Date
- 表示时间和日期
SimpleDateFormat
- java.text.SimpleDateFormat
- 定制日期时间格式
//获取当前时间Date date = new Date();System.out.println(date);//定制日期格式化,年-月-日 时分秒SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateStr = format.format(date);System.out.println(dateStr);
Calendar
-
java.util.Calendar
-
抽象类,用于设置和获取时间日期数据的特定部分
-
方法:
方法或属性 说明 int get(int field) 返回给定日历字段的值 MONTH 指示月 DAT_OF_MONTH 指示一月中的某天 DAT_OF_WEEK 指示一个星期中的某天
//通过Calender来操作日期时间Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;//Calendar.MONTH要做+1的操作int day = c.get(Calendar.DAY_OF_MONTH);System.out.println("现在是:"+year+"年"+month+"月"+day+"日");//星期几,Calendar.DAY_OF_WEEK中sunday是1int week = c.get(Calendar.DAY_OF_WEEK)-1;System.out.println("今天是星期"+week);
更多推荐
实用类
发布评论