# 1、类库介绍
# 1.1 - 常用包
java.lang 包 - 该包是 java 中的核心包,该包中的所有类由 java 虚拟机自动导入
如:String类、System类、Thread类等
java.util 包 - 该包是 java 中的工具包,该包中提供了大量的工具类和集合类等
如:Scanner类、Random类、Collections类等
java.io 包 - 该包是 java 中的 IO 包,该包提供了有关输入输出的类信息等
如:FileInputStream类、FileOutputStream类等
java.net 包 - 该包是 java 中的网络包,该包中提供了有关网络编程类信息
如:ServerSocket类、Socket类、DatagramSocket类
# 1.2 - Object 类
基本概念
java.lang.Object 类是所有类层次结构中的根类
常用方法
方法名 |
说明 |
boolean equals(Object obj) |
用于判断调用对象和参数对象是否相等 |
int hashCode() |
用于返回调用对象的哈希码值(内存地址编号) |
String toString() |
用于返回调用对象的字符串表示形式 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| import java.util.Objects;
public class Student{ private String name; private int age;
public Student() { }
public Student(String name, int age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } } ------------------------------------------------
public class Demo01 { public static void main(String[] args) { Student stu01 = new Student("Andy", 18); Student stu02 = new Student("Andy", 18);
System.out.println(stu01.equals(stu02)); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public class Demo02 { public static void main(String[] args) { String str01 = new String("张三"); String str02 = new String("李四");
System.out.println(str01.hashCode()); System.out.println(str02.hashCode());
String str03 = str01; System.out.println(str03.hashCode()); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Student类中重写 @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } ------------------------------------------------
public class Demo03 { public static void main(String[] args) { Student stu01 = new Student("Andy", 18);
System.out.println(stu01.toString()); System.out.println(stu01); } }
|
# 1.3 - 包装类
# 1.3.1 - 包装类的概念
在某些场合(集合)中要求所有的内容必须都是对象,但是java中的8中基本数据类型定义的变量并不是对象,为了满足该场合的需求需要对变量做对象化处理,此时需要借助包装类。
# 1.3.2 - 常用包装类
基本数据类型 |
包装类 |
byte |
java.lang.Byte 类 |
short |
java.lang.Short 类 |
int |
java.lang.Integer 类 |
long |
java.lang.Long 类 |
float |
java.lang.Float 类 |
double |
java.lang.Double 类 |
boolean |
java.lang.Boolean 类 |
char |
java.lang.Charactor 类 |
# 1.3.3 - Integer 类
基本概念
java.lang.Integer类被final关键字修饰表示该类不能被继承
该类内部包装了一个int类型的变量作为该类的成员变量,实现int类型的包装
装箱和拆箱的概念
装箱就是指从int类型向Integer类型的转换。
拆箱就是指从Integer类型向int类型的转换。
从 JDK1.5 以后,编译器提供了自动拆箱和装箱的机制
常用方法
方法名 |
说明 |
int intValue() |
用于返回一个调用对象的 int 类型数据 |
float floatValue() |
用于返回一个调用对象的 float 类型数据 |
static int parseInt(String str) |
用于将参数指定的字符串转换成整数类型数据并返回 |
static String toBinaryString(int i) |
用于将参数指定的 int 类型数据转换成字符串形式的二进制并返回 |
static Integer valueOf(Stirng str) |
用于将参数指定的字符串转换为 Integer 对象 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.util.ArrayList;
public class Demo04 { public static void main(String[] args) { String str01 = "9527"; String str02 = "9527acdc"; int num01 = 123; Integer num02 = 456;
int i = num02.intValue(); System.out.println(i); float v = num02.floatValue(); System.out.println(v); int i1 = Integer.parseInt(str01);
System.out.println(i1); System.out.println(Integer.toBinaryString(num01)); Integer integer = Integer.valueOf(str01); System.out.println(integer); } }
|
# 1.4 - String 类(重点)
基本概念
java.lang.String 类由 final 关键字修饰,表示该类不能被继承。
该类用于描述字符串,使用该类创建的对象可以描述 Java 中的所有字符串字面值,如:“asd”,“321”
1 2 3 4
| 注意: String s1 = null; 有何区别?????? String s1 = "";
|
常用构造方法
方法名 |
说明 |
String() |
使用无参的形式来构造对象 |
String(byte[] bytes) |
使用参数指定的字节数组来构造字符串 |
String(byte[] bytes, int offset, int length) |
使用参数指定的字节数组的一部分来构造字符串 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class Demo01 { public static void main(String[] args) { String str01 = new String(); System.out.println(str01);
byte[] bytes = {97,98,99,100,101,102,103}; System.out.println(new String(bytes));
System.out.println(new String(bytes,3,3)); } }
|
# 字符串常量池
Java为了避免产生大量相同的字符串对象,设计了字符串常量池,通过初始化的方式创建的字符串都会存储在常量池中,且字符串不能重复,以便共同使用,提高存储效率。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public class Demo02 { public static void main(String[] args) { String str01 = "Hello";
String str02 = "Hello";
System.out.println(str01 == str02);
String str03 = new String("Hello");
System.out.println(str01 == str03); } }
|
# String 类常用方法
方法名 |
说明 |
char charAt(int index) |
用于返回调用对象指定参数位置的字符 |
int length() |
用于返回字符串的长度 |
int compareTo(String anotherString) |
表示按照字典顺序来比较两个字符串的大小 |
int compareToIgnoreCase(String str) |
比较字符串大小,忽略大小写 |
boolean equals(Object anotherObject) |
用于判断调用对象字符串和参数对象字符串内容是否相等 |
boolean equalsIgnoreCase(Object anotherObject) |
判断字符串是否相等,忽略大小写 |
boolean contains(CharSequence s) |
判断调用对象字符串中是否包含参数字符串 |
String concat(String str) |
返回参数对象与调用对象的拼接 |
boolean endsWith(String suffix) |
判断当前字符串是否以 suffix 为结尾 |
boolean startsWith(String prefix) |
判断当前字符串是否以 prefix 开头 |
String toLowerCase() |
用于将所有调用对象字符串都转换为小写 |
String toUpperCase() |
用于将所有调用字符串对象转换为大写 |
byte[] getBytes()**** ** |
用于将字符串内容转换为 byte 数组并返回 |
int indexOf(String str) |
用于查找指定参数第一次出现的下标,不存在则返回 - 1 |
int lastIndexOf(String str) |
用于查找指定参数最后一次出现的下标。 |
String substring(int beginIndex) |
用于获取从参数指定位置开始截取字符串并返回 |
String substring(int beginIndex,int endIndex) |
用于获取从 beginIndex 位置开始到 endIndex 位置结束之间的字符串。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import java.util.Arrays;
public class Demo03 { public static void main(String[] args) { String str01 = "Hello JavaSE"; String str02 = "hello JavaSE";
char c = str01.charAt(7); System.out.println(c);
System.out.println(str01.length());
System.out.println(str01.compareTo(str02)); System.out.println(str01.compareToIgnoreCase(str02));
System.out.println(str01.equals(str02)); System.out.println(str01.equalsIgnoreCase(str02));
System.out.println(str01.contains("Java")); System.out.println(str01.contains("java"));
System.out.println(str01.concat("!~~~"));
System.out.println(str01.endsWith("SE")); System.out.println(str01.startsWith("hello"));
System.out.println(str02.toLowerCase()); System.out.println(str02.toUpperCase());
byte[] bytes = str02.getBytes(); System.out.println(Arrays.toString(bytes));
System.out.println(str02.indexOf("a")); System.out.println(str02.lastIndexOf("a"));
System.out.println(str02.substring(6)); System.out.println(str02.substring(6,10)); } }
|
# 1.5 - String 类与 StringBuilder 和 StringBuffer 区别
String类型与StringBuilder、StringBuffer的区别主要在于String类构造的对象时不可变的,因此每次对String类型进行改变内容都相当于创建了一个新的对象,而StringBuilder与StringBuffer类的对象能够被多次修改的,并且不产生新的未使用的对象。
类型 |
区别 |
String |
值不可变,修改就会创建新的对象,占用内存空间大 |
StringBuffer |
值可变,不会创建新的对象,占用内存空间小,线程安全,速度慢,多线程 |
StringBuilder |
值可变,不会创建新的对象,占用内存空间小,线程不安全,速度快,单线程 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public class Demo04 { public static void main(String[] args) {
StringBuilder str = new StringBuilder("Hello"); StringBuilder newStr = str.append(" Java"); System.out.println(str == newStr); System.out.println(str); System.out.println(newStr); newStr.insert(10,"SE"); System.out.println(str); str.replace(6,12,"Linux"); System.out.println(newStr); str.delete(5,11); System.out.println(str); } }
|
# 1.6 - 日期相关类
# 1.6.1 - Date 类
java.util.Date类用于描述日期信息,表示特定的瞬间可以精确到毫秒。
构造方法
方法名 |
说明 |
Date() |
构造方法用于使用当前系统日期来初始化对象 |
Date(long date) |
构造方法根据参数指定的毫秒数来构造对象 |
常用方法
方法名 |
说明 |
long getTime() |
用于获取当前对象距离 1970 年 1 月 1 日 0:0:0 之间的毫秒数 |
void setTime(long time) |
用于根据参数指定的毫秒数来设置时间 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.Date;
public class Demo05 { public static void main(String[] args) { Date date = new Date(); System.out.println(date);
long time = date.getTime(); System.out.println(time); time = time - 31536000000L; Date date1 = new Date(time); System.out.println(date1); } }
|
基本概念
java.text.DimpleDateFormat 类用于格式化日期,通俗来说就是调整时间显示的格式。
常用方法
方法名 |
说明 |
SimpleDateFormat(String pattern) |
根据参数指定的格式来构造对象 |
参数格式 |
“yyyy-MM-dd HH:mm:ss” |
public final String format(Date date) |
用于将参数指定的日期对象按照调用调用对象的格式来转换成字符串形式 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import java.text.SimpleDateFormat; import java.util.Date;
public class Demo06 { public static void main(String[] args) { Date date = new Date(); System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = sdf.format(date); System.out.println(time); } }
|
# 1.7 - Math
# 1.7.1 - 基本概念
Java中的Math包含了用于执行基本数学运算的属性和方法
# 1.7.2 - 常用方法
方法名 |
说明 |
static int abs(int a) |
返回参数的绝对值 |
static double ceil(double a) |
方法可以对一个数进行上舍入 |
static double floor(double a) |
方法可以对一个数进行下舍入 |
static int round(double a) |
返回一个四舍五入的值 |
static int min(int a , int b) |
返回两个参数的最小值 |
static int max(int a, int b) |
返回两个参数的最大值 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public class Demo01 { public static void main(String[] args) { int n01 = -18; int n02 = 21; double d01 = 3.4; double d02 = 3.5;
System.out.println(Math.abs(n01)); System.out.println(Math.abs(n02));
System.out.println(Math.round(d01)); System.out.println(Math.round(d02));
System.out.println(Math.ceil(d01)); System.out.println(Math.ceil(d02));
System.out.println(Math.floor(d01)); System.out.println(Math.floor(d02));
System.out.println(Math.min(n01,n02)); System.out.println(Math.max(n01,n02)); } }
|
# 1.8 - Scanner
# 1.8.1 - 基本概念
一个简单的文本扫描器,用final修饰的,表示该类不可被继承
# 1.8.2 - 基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import java.util.Scanner;
public class Demo02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);
System.out.println("请输入一串字符串:"); System.out.println(sc.nextLine()); } }
|
# 1.9 - Random
# 1.9.1 - 基本概念
该类是Java中用来生成随机数的类。
# 1.9.2 - 基本引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import java.util.Random;
public class Demo03 { public static void main(String[] args) { Random ran = new Random();
System.out.println(ran.nextInt());
System.out.println(ran.nextInt(100));
System.out.println(ran.nextDouble()); System.out.println(ran.nextFloat()); } }
|