Java基础—–常用类
一、Scanner类
(主要作用:用户交互)
package com.wr.oyc;
import java.util.Scanner;
public class System {
public static void main(String[] args) {
Scanner scanner = new Scanner(java.lang.System.in);
java.lang.System.out.print("请输入您的年龄:");
int num = scanner.nextInt();
if(num < 18 ){
java.lang.System.err.println("禁止未成年上网!!!");
}else{
java.lang.System.out.println("去网吧耍吧");
}
}
}
二、包装类
2.1、包装类概述
2.2、包装类对应基本类型
类图:
2.3、包装类的用途
2.4、自动装箱和拆箱
定义:自动装箱和拆箱就是将基本数据类型就是和包装类自动转换
2.4.1、自动拆箱/拆箱的本质
自动装箱:
自动拆箱:
2.4.2、包装类的缓存问题
2.4.2.1 为什么两个100的对象使用== 相等,但是两个1000的对象使用 ==不等于
原因在valueof方法中
a、如果传入的数在缓存的区间就返回原来的数字(也就是同一个对象)
如果传入的数不在缓存区间就返回新的对象,那么就算两个数字相同
但是对象不同那么内存地址也就不同,使用==比较的就内存地址
三、字符串相关类
3.1、String字符串
对于"hello" + "java“ 和 "hellojava"是同一对象,由于字符串常量池
但是str3+str4 是不等于str5
因为在编译期间编译器是不知道str3 + str4是什么的
什么 str4 不等于 (str3 + str4)
3.2、StringBuilder和StringBuffer可变字符序列
3.3、字符串和可变字符序列使用陷阱
不要用String去拼接字符串,每一次拼接都是创建一个对象,占用空间
四、 时间处理类
4.1、时间类图
4.2、时间类方法
package com.wr.oyc.date;
import java.util.Date;
public class Demo1 {
public static void main(String[] args) {
Date date = new Date(100000000000003032L);
System.out.println(date);
System.out.println(date.getTime());
Date date1 = new Date(-21L*365*24*3600*1000);
System.out.println(date1);
}
}
4.3、DateFormat类和SimpleDateFormat类
4.3.1、字符串转换成Date
4.3.2、Date转换成字符串
4.3.3、格式化字符的意义
4.3.3、使用格式化字符
4.4、Calender类
五、其他类
5.1、Math和Randon类
5.2、File类
5.2.1、作用
5.2.2、创建目录或者文件
5.2.3、递归将一个文件夹中的所有文件复制到另外一个文件夹中
package wr.oyc;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyCopyFileAndDirectory {
public static void main(String[] args) {
copyAll(new File("C:\\Users")
, new File("E:\\"));
}
// 复制整个文件夹的方法
public static void copyAll(File source, File start) {
if (!start.exists()) {// 目的地是否有bourn的文件或者目录
start.mkdir();// 没有就创建一个
File[] listFiles = source.listFiles();// 获取源文件当前目录下第一层的所有文件信息
for (File file : listFiles) {// 循环遍历
if (file.isFile()) {// 当前的元素时文件么 如果是 则直接进行拷贝
copyFile(new File(source + "\\" + file.getName()), new File(start+ "\\" + file.getName()));
} else {// 如果不是 则是目录 递归调用自己的方法 实现多层级复制
copyAll(new File(source + "\\" + file.getName()), new File(start+ "\\" + file.getName()));
}
}
}
}
// 复制一个文件的方法
public static void copyFile(File src, File newplace) {
BufferedInputStream bis = null;// 创建输入输出缓存字节流 提高数据流通的性能
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(src));// 把字节流和字节缓存流连接在一起,形成通路
bos = new BufferedOutputStream(new FileOutputStream(newplace));
byte[] b = new byte[1024];// 创建byte数组的中转站,缓存为1024byte
int len = 0;// 接受读取时read方法的返回值
while ((len = bis.read(b)) != -1) {// 返回值为-1则读完了 停止读取和写入
bos.write(b);// 写出byte数组的数据
bos.flush();// 手动刷新输出的缓冲区
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (bos == null) {
try {
bos.close();// 反向关闭高层流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (bis == null) {
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
5.3、枚举
总结
关于Scanner类的输出、包装类的装箱和拆箱、字符串String和可变字符序列StringBuffer、StringBuilder
再到Math类和Random类、枚举类、文件类、再到时间类Date SimpleDateFormat 字符串转时间 时间转字符串 Calender类 ,一起加油,每日一记
版权声明:本文为qq_48788523原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。