# 7.0 包和常用类
7.1、常见的包
java.long 默认包 直接可以使用其内部的方法 不用导入
包含的常见类: String System Object
java.util, java.sql, java.text, java.swing
java.awt, java.io, java.net
7.2、包装类
基本数据类型
byte boolean short double float long char int
包装类(long) 包
Byte Boolean Short Double Float Long Character Integer
/*
* 基础数据类型和包装类的转换
*/
public class ChangeType {
public static void main(String[] args) {
String str1 = "22";
String str2 = "99.4";
int a = Integer.parseInt(str1);
float b = Float.parseFloat(str2);
String str3 = "" + a;
String str4 = "" + b;
String newStr = a + ' ' + b + ' ' + str3 + ' ' + str4;
System.out.println(newStr);
int a1 = 10;
Integer a2 = new Integer(a1);
Integer a3 = a1; // 基本型数据 -> 引用型 自动装箱
int c = a2; // 引用型 -> 基本型数据 自动拆箱
System.out.println(a3 + " " + c);
}
}
为什么保留八个基本数据类型:
基本型 只在栈中有一块内存
包装类 栈和堆中分别有一块内存, 或许有更多块内存
效率相较于基本数据类型较低
7.3、日期类
public class TestDate {/** 日期类常用方法*/
public static void main(String[] args) throws ParseException {
Date now = new Date();
now.getTime() // 输出从1970年开始到现在的毫秒数
System.out.println(now); // 输出当前日期
// 年 月 日 时 分 秒 毫秒
// SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd:HH.mm.ss.SS");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String str = df.format(now);
// 根据 SimpleDateFormat 的参数格式化 Date对象为字符串
System.out.println(str);
String dateStr = "2001-1-1";
Date btd;
btd = df.parse(dateStr); // String 转换成 Date 参数 字符串
System.out.println(btd);
String str1 = df.format(btd); // Date 转换成 String 参数 Date对象
System.out.println(str1);
// 日期计算
// 创建日期对象 通过调用 类.静态方法 创建
Calendar calendar = Calendar.getInstance();
calendar.setTime(btd); // 设置日期时间
calendar.add(Calendar.DATE, 100); // 向前(后)移动 count 年(月, 周, 日)
Date newDate = calendar.getTime(); // 通过日期类的方法 返回值 Date 对象
System.out.println(df.format(newDate));
}
}
7.4、字符串
字符串创建
// 方法一
String str1 = new String("hello")
//在堆中创建内存 并将内存首地址返回给栈
// 方法二
String str1 = "hello";
/* 在字符串池中查找 是否有相同的字符串
如果有 将已有字符串的内存首地址返回给栈
如果没有 在字符串池中创建内存 并将内存首地址返回给栈
*/
字符串拼接
StringBuffer sb = new StringBuffer("hello");// 变长字符串
sb.append("world"); // 扩充
System.out.println(sb.toString()); // 编程字符串输出
7.10、杂项知识点
== 与 equals 的区别:
1- == 比较的是栈值,是否指向同一块内存。
2- equals比较的是指向的两块内存存储的数值是否相等。
// 为true, equals 一定为true;equals 为true, ==不一定为true。
3- 基本型比较使用==比较
引用型用 equals 方法比较
直接导入静态方法和静态属性(但是不推荐使用)
import com.babymuu.Student.cLSName; // 导入静态属性
import com.babymuu.Student.sayHello; // 导入静态方法
public class test {
// main函数中
public static void main(String[] args) {
// 属性可以直接赋值
clsName = "hello";
// 方法可以直接使用
sayHello();
}
}
StringBuffer 和 StringBuilder 的区别
StringBuffer 是线程安全的
StringBuilder 是线程非安全的 但缺少了上锁开锁的过程导致资源占用减少