回顾
1.字节输入流: FileInputStream字节输出流: FileOutputStream字节缓冲输入流: BufferedInputStream字节缓冲输出流: BufferedOutputStream字符输入流: FileReader字符输出流: FileWriter字符缓冲输入流: BufferedReader字 符缓冲输出流: BufferedWriter2.写入一个字符串的数据到磁盘的c:/aaa/1.txt
BufferedOutputStream bos = new BufferedOutputStream (newFileOutputStream("c:/aaa/1.txt"));
String str = "狗蛋很性;
byte[] buf = str.getBytes();
bos.write(buf);
bos.close();3.序列化和反序列化ObjectInputStreamObjectOutputStream
今天的内容
1.常用类相关的东西
1.StringBuffer
也是和字符串相关的类
可变的字符序列。 字符串缓冲区就像一个
String
,但可以修改。 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容如,如果
z
是指当前内容为"start"
的字符串缓冲区对象,那么方法调用z.append("le")
将使字符串缓冲区包含"startle"
,而z.insert(4, "le")
会将字符串缓冲区更改为包含"starlet"
。
package com.qf.a_stringbuffer;public class Demo1 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("a");System.out.println(sb);//startsb.append("le");System.out.println(sb);//startlesb.append("startlestartiuytreew");System.out.println(sb);sb.insert(1, "9");System.out.println(sb);//a9lestartlestartiuytreew//字符串反转System.out.println(sb.reverse());//weertyuitratseltratsel9aSystem.out.println(sb.delete(1, 3));}
}
String 和String Buffer和StringBuider区别
String | StringBuffer | StringBuilder |
---|---|---|
String 值不可变的,导致每次操作String都会有新的对象。不仅效率低而且 占内存。字符串在处理少量的字符串的时候用String | 可变的,线程安全的。 | 可变的,线程不安全的。 |
如果是多线程的用StringBuffer | 如果是单线程用StringBuilder |
2.枚举类
Java中枚举类是一个特殊的类,代表是一组常量
在Java中常量: public static final String WEEK = "星期一";
自从 JDK1.5之后枚举类开始出来
不可改变的量
定义枚举类的语法格式;
public enum 枚举类 {常量1, 常量2,... }
package com.qf.b_enum;enum Color {//常量RED, GREEN, BLUE
}
public class Demo1 {public static void main(String[] args) {Color red = Color.RED;System.out.println(red);}
}
枚举一般用在switch-case中
package com.qf.b_enum;enum Color1 {RED, GREEN, BLUE
}
public class Demo2 {public static void main(String[] args) {Color1 color1 = Color1.RED;switch (color1) {case RED:System.out.println("是红色");break;case GREEN:System.out.println("是绿色");break;case BLUE:System.out.println("是蓝色");break;}}
}
枚举类的三个方法
values(); 获取的枚举类中所有的值
oridinal();常量的索引的值
valueOf();是字符串常量
package com.qf.b_enum;enum Color3 {RED, GREEN, YELLOW
}
public class Demo3 {public static void main(String[] args) {Color3[] values = Color3.values();for (Color3 value : values) {System.out.println(value + "所对应索引为:" + value.ordinal());}//valueOf();字符串对应的枚举常量Color3 red = Color3.valueOf("RED");System.out.println(red);}
}
比如以后会定义很多状态量,比如:订餐支付,未支付,订单完结,派送中。
package com.qf.b_enum;enum ProductEnum {//利用有参构造方法对枚举属性进行赋值UP(0, "在架"), DOWN(1, "下架");private Integer code;private String message;//可以提供一个有参构造方法ProductEnum(Integer code, String message) {this.code = code;this.message = message;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
public class Demo5 {public static void main(String[] args) {System.out.println(ProductEnum.UP.getCode());System.out.println(ProductEnum.UP.getMessage());System.out.println(ProductEnum.DOWN.getCode());System.out.println(ProductEnum.DOWN.getMessage());}
}
package com.qf.b_enum;enum Sex {MALE(0, "未知"),FEMALE(1, "女");private Integer sexId;private String sexChar;Sex(Integer sexId, String sexChar) {this.sexId = sexId;this.sexChar = sexChar;}public Integer getSexId() {return sexId;}public void setSexId(Integer sexId) {this.sexId = sexId;}public String getSexChar() {return sexChar;}public void setSexChar(String sexChar) {this.sexChar = sexChar;}
}
class Person {private String name;private int age;private Sex sex;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;}public Sex getSex() {return sex;}public void setSex(Sex sex) {this.sex = sex;}
}
public class Demo6 {public static void main(String[] args) {Person person = new Person();person.setSex(Sex.MALE);System.out.println(person.getSex().getSexId());System.out.println(person.getSex().getSexChar());}
}
3.包装类
Java八大基本类型: java 提供了与之对应的包装类。
为啥?
int a = 20; 基本数据类型是没有提供方法。int包装类是Integer 很多方法操作 int类型的数据
int===>Integer
byte===>Byte
short===>Short
long===>Long
char===>Character
float===>Float
double=-==>Double
boolean ===>Boolean
【重点】:
Java 中自动拆箱和自动装箱
自动装箱: 将基本数据类型转为包装类
自动拆箱: 将包装类转为基本数据类型
将字符串转为基本数据类型:
parse***();
package com.qf.c_baozhuang;public class Demo1 {public static void main(String[] args) {Integer i1 = new Integer(20);System.out.println(i1);//20int compare = Integer.compare(20, 30);System.out.println(compare);int i= 30;//基本数据类型Integer i2 = i;Integer i3 = 40;//自动装箱int i4 = i3;//自动拆箱int i5 = Integer.parseInt("12");//将字符转为int类型的数据System.out.println(i5);//12//面试题Integer a = 127;Integer b = 127;Integer c = 128;Integer d = 128;System.out.println(a == b);//trueSystem.out.println(c == d);//false}
}
4.Math类
Math
类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。绝对值:
最大值
最小值
向上取整
向下取整
四舍五入
随机数
package com.qf.d_math;public class Demo1 {public static void main(String[] args) {System.out.println(Math.E);System.out.println(Math.PI);double pow = Math.pow(2, 3);System.out.println(pow);//绝对值System.out.println(Math.abs(-986));//986//求两个数的最大值System.out.println(Math.max(89, Math.max(67, Math.max(2, 8))));//求两个数的最小值System.out.println(Math.min(67, 23));//向上取整 ceil 天花板System.out.println(Math.ceil(81.1));//向下取整 floor 地板System.out.println(Math.floor(89.9));//89//四舍五入System.out.println(Math.round(84.3));//返回值的是int类型的数据System.out.println(Math.round(84.8));//返回值的是int类型的数据//随机数 返回一个double值为正号,大于等于0.0 ,小于1.0System.out.println(Math.random());//随机生成一个[0, 100)整数System.out.println((int)(Math.random()*100));}
}
5.Random类
该类的实例用于生成伪随机数的流
package com.qf.e_randon;import java.util.Random;public class Demo1 {public static void main(String[] args) {Random random = new Random();System.out.println(random.nextInt());//-2^31 ~ 2^31-1System.out.println(random.nextDouble());//0.4644986990282639System.out.println(random.nextGaussian());//2.4073605658546566}
}
6.System类
System
类包含几个有用的类字段和方法。 它不能被实例化。
System
类提供的System
包括标准输入,标准输出和错误输出流;
package com.qf.f_system;import java.io.PrintStream;
import java.util.Properties;
import java.util.Scanner;public class Demo1 {public static void main(String[] args) {PrintStream out = System.out;//打印流对象out.println("狗蛋");System.out.println("狗蛋");System.err.println("嘻嘻");
// Scanner scanner = new Scanner(System.in);
// System.out.println("请输入一个整数:");
// int i = scanner.nextInt();//static long currentTimeMillis()//返回当前时间(以毫秒为单位)。
// long start = System.currentTimeMillis();//1687162040724
// for (int i = 0; i < 10000; i++) {
// System.out.println("xixi");
// }long end = System.currentTimeMillis();//System.out.println(end - start);//36ms//获取电脑 安装的一下属性Properties properties = System.getProperties();System.out.println(properties.get("os.name"));//window10System.out.println(properties.get("user.home"));//C:\Users\bowangSystem.out.println(properties.get("java.version"));//1.8.0_241}
}
7.Date
Date date = new Date();System.out.println(date);//Mon Jun 19 16:31:07 IRKT 2023//伊尔库茨克时间//以上的时间进行格式化SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = sdf.format(date);System.out.println(format);}
练习:
1.八大基本数据类型的包装类(自己百度)
2.Calendar
3.BigDecimal
4.LocalDate