1、Java中基本类型的包装类
Java中的基本类型我们应该都知道,例如,int、float、double、boolean、char 等。为了让基本类型也具有对象特性,Java为每个基本数据类型都提供了一个包装类,这样就可以像操作对象那样操作基本数据类型。
基本类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类其实就是提供类型转换的方法。以Integer为例看一下。
Integer包装类的构造方法:
Integer(int value):创建一个Integer对象,表示指定的int值。
Integer(String s) :创建一个Integer对象,表示String参数所指示的int值。
如下代码所示:
Integer a=new Integer(4);//定义包装类对象
Integer b=new Integer("11");//定义包装类对象
Integer包装类的常用方法:
方法 | 描述 |
---|---|
byteValue() | 将该Integer转为byte类型。 // Integer obj=new Integer(1); // byte b=obj.byteValue(); |
doubleValue() | 将该Integer转为double类型。 // Integer obj=new Integer(1); // double d=obj.doubleValue(); |
floatValue() | 将该Integer转为float类型。 // Integer obj=new Integer(1); // float f=obj.floatValue(); |
intValue() | 将该Integer转为int类型。 // Integer obj=new Integer(1); // int i=obj.intValue(); |
longValue() | 将该Integer转为long类型。 // Integer obj=new Integer(1); // long l=obj.longValue(); |
parseInt(String s) | 将字符串转为int类型。 // int i = Integer.parseInt("30"); |
toString() | 将该Integer转换成字符串。 // Integer obj=new Integer(1); // String s=obj.toString(); |
valueOf(String s) | 将字符串转为Integer类型。 // int i = Integer.valueOf("30"); |
2、Date和SimpleDateFormat类
我处理日期和时间相关的数据,我们可以使用java.util包中的Date类。Date类主要的作用是获取当前时间。而java.text包中的SimpleDateFormat类主要是对日期时间进行格式化的。具体如下,
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormat {
public static void main(String []args){
//创建Date对象,表示当前时间
Date d=new Date();
//创建SimpleDateFormat对象,指定目标格式
// “yyyy-MM-dd HH:mm:ss” 为预定义字符串, yyyy 表示四位年, MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//调用format()方法,格式化时间,转换为指定格式字符串
String today=sdf.format(d);
//输出转换后的字符串
System.out.println(today);//运行结果:2018-07-29 21:51:50
}
}
使用parse()方法将日期格式字符串转成Date对象。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormat {
public static void main(String []args){
//创建SimpleDateFormat对象,指定字符串的日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String day="2016-12-30 14:52:30"; //创建日期格式的字符串
try {
//调用parse()方法,将字符串转换为日期
Date date =(Date)df.parse(day);
//输出转换后的时间
System.out.println("当前时间;" + date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3、Calendar类
从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现(Date的一些方法都过时了)。在设计上,Calendar类的功能要比Date类强大很多。
import java.util.Calendar;
public class CalendarDemo{
public static void main(String []args){
//创建Calendar对象
Calendar c=Calendar.getInstance();
//获取年
int year=c.get(Calendar.YEAR);
//获取月份,0表示1月份
int month=c.get(Calendar.MONTH)+1;
//获取日期
int day=c.get(Calendar.DAY_OF_MONTH);
//获取小时
int hours=c.get(Calendar.HOUR_OF_DAY);
//获取分钟
int minute=c.get(Calendar.MINUTE);
//获取秒
int scond=c.get(Calendar.SECOND);
//输出结果
System.out.println(year+"-"+month+"-"+day+" "+hours+":"+minute+":"+scond);
//运行结果是:2018-07-29 22:56:9
}
}
Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo {
public static void main(String []args){
//创建Calendar对象
Calendar c=Calendar.getInstance();
//将Calendar对象转换为Date对象
Date date=c.getTime();
//获取当前毫秒数
Long time=c.getTimeInMillis();
System.out.println("当前时间:"+date);
System.out.println("毫秒数:"+time);
//运行结果为: (系统当前时间)
//当前时间:Sun Jul 29 23:03:56 CST 2018
//毫秒数:1532876636921
}
}
4、Math类
Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类来调用。例如,
Math.random();
public class MathDemo {
public static void main(String []args){
//定义一个double类型的变量
double a=12.08;
//将double类型强制转换 int类型,去掉小数位
int b=(int) a;
System.out.println("强制转换为:"+b);
//调用round方法,进四舍五入
Long c=Math.round(a);
System.out.println("返回四舍五入的整数:"+c);
//调用floor方法,小于参数的最大
double d=Math.floor(a);
System.out.println("返回小于参数的最大整数:"+d);
//调用ceil方法,大于参数的最小
double e=Math.ceil(a);
System.out.println("返回大于参数的最小整数:"+e);
//调用random方法,随机数[0,1)之间的 随机浮点数
double f=Math.random();
System.out.println("随机数:"+f);
//调用random方法,随机[0,99)之间的整数
int g=(int)(Math.random()*99);
System.out.println("返回[0,99)之间的随机整数:"+g);
}
}
5、Random类
下面Random()的两种构造方法:
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
我们可以在构造Random对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:Random r1 = new Random(20);
或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();
需要说明的是:你在创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。如下面的Java代码:
Random rand =new Random(25);
int i;
i=rand.nextInt(100);//得到一个随机数
6、String 类
用于处理文本数据。它提供了多种方法来操作字符串,如长度计算、字符串连接、子字符串、替换等。Java 中的 String 类是用于操作字符串的非常常用的类。它是不可变的,创建了 String 对象,就不能更改这个对象中的字符串。在涉及频繁修改字符串的场景中,考虑使用 StringBuilder 或 StringBuffer 以提高性能。在进行字符串比较时,equals() 方法比 == 运算符更为可靠,因为 == 比较的是对象的引用而不是内容。String 类在 Java 中非常常用,熟练掌握其方法和特性对于进行有效的字符串操作至关重要。
public class Main {
public static void main(String[] args) {
// 创建字符串
String str1 = "Hello World";
String str2 = new String("Welcome to Java");
// 字符串长度
System.out.println("Length of str1: " + str1.length());
// 字符串连接
String str3 = str1.concat(" - ").concat(str2);
System.out.println("Concatenated String: " + str3);
// 字符串比较
System.out.println("str1 equals str2? " + str1.equals(str2));
// 字符串查找
System.out.println("Index of 'World' in str1: " + str1.indexOf("World"));
// 字符串截取
System.out.println("Substring of str1 from index 6: " + str1.substring(6));
// 字符串替换
System.out.println("Replace 'Hello' with 'Hi' in str1: " + str1.replace("Hello", "Hi"));
// 字符串转换
System.out.println("Uppercase of str1: " + str1.toUpperCase());
// 字符串去空格
String str4 = " Hello Java ";
System.out.println("Trimmed str4: '" + str4.trim() + "'");
// 字符串分割
String[] parts = str1.split(" ");
System.out.println("Split str1: " + java.util.Arrays.toString(parts));
// 字符串格式化
String formattedStr = String.format("Name: %s, Age: %d", "Alice", 30);
System.out.println("Formatted String: " + formattedStr);
// 转换为字符数组
char[] charArray = str1.toCharArray();
System.out.print("Characters in str1: ");
for (char c : charArray) {
System.out.print(c + " ");
}
System.out.println();
// 获取特定索引的字符
System.out.println("Character at index 0 in str1: " + str1.charAt(0));
// 字符串是否为空
System.out.println("Is str1 empty? " + str1.isEmpty());
// 字符串转换为基本数据类型
String numberStr = "100";
int number = Integer.parseInt(numberStr);
System.out.println("Integer value of numberStr: " + number);
}
}
7、Object 类
Java 中的 Object 类是所有类的超类(父类),所有的 Java 类都继承自 Object 类。Object 类提供了一些基本方法,这些方法对所有 Java 对象都有效。在重写 equals 方法时,通常也需要重写 hashCode 方法,以保持两者之间的一致性。toString 方法通常用于提供对象的有用信息,特别是在调试时。
public class Main {
public static void main(String[] args) {
// 创建 Person 对象
Person person1 = new Person("John Doe", 30);
Person person2 = new Person("Jane Doe", 25);
Person person3 = new Person("John Doe", 30);
// 使用 toString 方法打印对象信息
System.out.println("Person1: " + person1.toString());
System.out.println("Person2: " + person2);
// 比较对象是否相等
System.out.println("Person1 equals Person2: " + person1.equals(person2));
System.out.println("Person1 equals Person3: " + person1.equals(person3));
// 获取对象的哈希码
System.out.println("HashCode of Person1: " + person1.hashCode());
System.out.println("HashCode of Person2: " + person2.hashCode());
System.out.println("HashCode of Person3: " + person3.hashCode());
// 使用 getClass 方法
System.out.println("Class of Person1: " + person1.getClass().getName());
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写 toString 方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// 重写 equals 方法
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
// 重写 hashCode 方法
@Override
public int hashCode() {
return name.hashCode();
}
}
8、System 类
Java 的 System 类提供了一系列用于系统级操作和系统属性访问的静态方法和变量。使用 System.out
和 System.err
输出信息时,System.err
通常用于打印错误或诊断信息。系统属性和环境变量可用于获取关于系统配置的信息。
public class Main {
public static void main(String[] args) {
// 标准输出
System.out.println("Hello, World!");
// 标准错误输出
//System.err.println("Error Message");
// 获取系统属性
String javaVersion = System.getProperty("java.version");
String osName = System.getProperty("os.name");
System.out.println("Java Version: " + javaVersion);
System.out.println("Operating System: " + osName);
// 设置和获取自定义系统属性
System.setProperty("myProperty", "myValue");
String myProperty = System.getProperty("myProperty");
System.out.println("Custom Property: " + myProperty);
// 获取环境变量
String path = System.getenv("PATH");
System.out.println("Path: " + path);
// 时间测量(毫秒)
long startTime = System.currentTimeMillis();
// 模拟一些操作
try {
Thread.sleep(1000); // 休眠 1 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("Time taken: " + (endTime - startTime) + " ms");
// 时间测量(纳秒)
long startNanoTime = System.nanoTime();
// 模拟一些操作
for (int i = 0; i < 1000; i++) {
// 空循环
}
long endNanoTime = System.nanoTime();
System.out.println("Time taken: " + (endNanoTime - startNanoTime) + " ns");
// 垃圾回收
System.gc();
// System.exit(0); // 正常退出程序
}
}
9、Arrays 类
Java 的 Arrays 类是 java.util 包的一部分,提供了一系列静态方法来操作数组,比如排序、搜索、比较和填充等。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 排序
int[] arr = {5, 3, 7, 1, 4};
Arrays.sort(arr);
System.out.println("Sorted array: " + Arrays.toString(arr));
// 搜索(使用二分法)
int index = Arrays.binarySearch(arr, 5);
System.out.println("Index of 5: " + index);
// 比较数组
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
int[] arr3 = {1, 2, 4};
System.out.println("arr1 equals arr2? " + Arrays.equals(arr1, arr2));
System.out.println("arr1 equals arr3? " + Arrays.equals(arr1, arr3));
// 填充数组
int[] fillArr = new int[5];
Arrays.fill(fillArr, 10);
System.out.println("Filled array: " + Arrays.toString(fillArr));
// 数组转列表
String[] strArr = {"apple", "banana", "cherry"};
java.util.List<String> list = Arrays.asList(strArr);
System.out.println("List: " + list);
// 复制数组
int[] copied = Arrays.copyOf(arr1, 3);
System.out.println("Copied array: " + Arrays.toString(copied));
// 数组转字符串
String arrString = Arrays.toString(arr);
System.out.println("Array as String: " + arrString);
// 数组的哈希码
int arrHashCode = Arrays.hashCode(arr);
System.out.println("Hash code of array: " + arrHashCode);
}
}
10、ArrayList 类
Java 中的 ArrayList 类是 java.util 包的一部分,提供了动态数组的功能。与普通数组相比,ArrayList 的大小可以动态变化。它提供了添加、搜索、更新和删除元素的方法。ArrayList 是基于数组实现的,提供了随机访问的能力。ArrayList 不是线程安全的。如果多线程环境中需要使用动态数组,可以考虑使用 Vector 或 Collections.synchronizedList 方法同步 ArrayList。
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个空的 ArrayList
ArrayList<String> fruits = new ArrayList<>();
// 添加元素
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// 获取特定索引的元素
String firstFruit = fruits.get(0);
System.out.println("First fruit: " + firstFruit);
// 修改指定索引位置的元素
fruits.set(1, "Blueberry");
System.out.println("Modified fruits list: " + fruits);
// 删除特定索引的元素
fruits.remove(2);
System.out.println("After removing an element: " + fruits);
// 删除特定元素
fruits.remove("Apple");
System.out.println("After removing 'Apple': " + fruits);
// 使用 for-each 循环遍历 ArrayList
System.out.println("Remaining fruits:");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 获取 ArrayList 的大小(元素个数)
int size = fruits.size();
System.out.println("Number of fruits: " + size);
// 检查 ArrayList 是否为空
boolean isEmpty = fruits.isEmpty();
System.out.println("Is the fruits list empty? " + isEmpty);
// 清空 ArrayList
fruits.clear();
System.out.println("After clearing the fruits list: " + fruits);
// 将 ArrayList 转换为普通数组
fruits.addAll(Arrays.asList("Mango", "Strawberry", "Pineapple"));
String[] fruitsArray = fruits.toArray(new String[0]);
System.out.println("Array: " + Arrays.toString(fruitsArray));
// 检查 ArrayList 是否包含特定元素
boolean containsMango = fruits.contains("Mango");
System.out.println("Contains Mango: "+ containsMango);
}
}
11、StringBuilder 和 StringBuffer 类
StringBuilder 和 StringBuffer 类用于创建可修改的字符串。StringBuilder 是非线程安全的,而 StringBuffer 是线程安全的。
import java.util.*;
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
// 添加字符串
sb.append(" World");
// 插入字符串
sb.insert(5, ",");
// 替换字符串
sb.replace(6, 11, "Java");
// 删除字符串
sb.delete(5, 6);
// 反转字符串
sb.reverse();
// 将 StringBuilder 转换为 String
String result1 = sb.toString();
System.out.println(result1);
StringBuffer sbf = new StringBuffer("Hello");
// 添加字符串
sbf.append(" World");
// 插入字符串
sbf.insert(5, ",");
// 替换字符串
sbf.replace(6, 11, "Java");
// 删除字符串
sbf.delete(5, 6);
// 反转字符串
sbf.reverse();
// 将 StringBuffer 转换为 String
String result2 = sb.toString();
System.out.println(result2);
}
}
12、File 类
Java 中的 File 类是 java.io 包的一部分,用于表示文件和目录路径名的抽象表示形式。用于创建、修改、删除文件和目录。
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// 创建 File 对象
File file = new File("example.txt");
// 检查文件是否存在
boolean exists = file.exists();
System.out.println("File exists: " + exists);
// 获取文件信息
if (exists) {
System.out.println("File name: " + file.getName());
System.out.println("Absolute path: " + file.getAbsolutePath());
System.out.println("Size: " + file.length() + " bytes");
System.out.println("Readable: " + file.canRead());
System.out.println("Writable: " + file.canWrite());
System.out.println("Executable: " + file.canExecute());
} else {
// 创建新文件
try {
boolean created = file.createNewFile();
System.out.println("File created: " + created);
} catch (IOException e) {
e.printStackTrace();
}
}
// 重命名文件
File newFile = new File("newExample.txt");
boolean renamed = file.renameTo(newFile);
System.out.println("File renamed: " + renamed);
// 创建目录
File directory = new File("exampleDir");
boolean dirCreated = directory.mkdir();
System.out.println("Directory created: " + dirCreated);
// 列出目录文件
File[] files = directory.listFiles();
if (files != null) {
for (File f : files) {
System.out.println(f.getName());
}
}
// 删除文件
boolean deleted = newFile.delete();
System.out.println("File deleted: " + deleted);
// 删除目录
boolean dirDeleted = directory.delete();
System.out.println("Directory deleted: " + dirDeleted);
}
}