Object类
getClass()
获取类对象
hashCode()
返回该对象的哈希码值
toString()
返回类地址+类名+hashCode
equals()
比较两对象地址是否相等
finalize()
包装类
装箱与拆箱
包装类在堆。基本数据类型在栈
JDK1.5之后,提供自动装箱和拆箱
public class Demo01 {
public static void main(String[] args) {
//类型转换:装箱,基本类型转成引用类型的过程 栈-->堆的操作
//基本类型
int num1 = 18;
Integer integer1 = new Integer(num1);
Integer integer2 =Integer.valueOf(num1);
System.out.println("装箱");
System.out.println(integer1);
System.out.println(integer2);
//类型转换:拆箱,引用类型转成基本类型
Integer integer3 = new Integer(100);
int num3 = integer3.intValue();
System.out.println("拆箱");
System.out.println(integer3);
System.out.println(num3);
// JDK1.5之后,提供自动装箱和拆箱
int age = 30;
//自动装箱
Integer integer4 = age;
System.out.println("自动装箱");
System.out.println(integer4);
//自动拆箱
int age2 = integer4;
System.out.println("自动拆箱");
System.out.println(age2);
System.out.println("========================基本类型和字符串之间的转换==================");
//基本类型和字符串之间的转换
//1.基本类型转字符串类型
int n1 = 100;
//1.1.使用+号
String s1 = n1+"";
//1.2.使用Integer中的toString方法
String s2 = Integer.toString(n1);
System.out.println(s1);
System.out.println(s2);
//2.字符串转成基本类型
String str = "150";
//使用Integer.parsexxx();
int n2 = Integer.parseInt(str);
System.out.println(n2);
//boolean字符串形式转成基本类型:"true"--->true 非:"true"--->false
String str2 = "true";
String str3 = "treu";
String str4 = "fales";
boolean b1 = Boolean.parseBoolean(str2);
boolean b2 = Boolean.parseBoolean(str3);
boolean b3 = Boolean.parseBoolean(str4);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
}
}
结果:
Integer缓冲区
- Java预先创建了256个常用的整数包装类型对象。
- 在实际应用当中,对已创建的对象进行复用
- 如果不在-128-127之间则在堆中开辟新空间
- 在-128-127之间则直接在缓冲区中找
//整数缓冲区
public class Demo02 {
public static void main(String[] args) {
//面试题
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1==integer2);
/*
Java预先创建了256个常用的整数包装类型对象。
在实际应用当中,对已创建的对象进行复用
如果不在-128-127之间则在堆中开辟新空间~
在-128-127之间则直接在缓冲区中找
*/
Integer integer3 = 100; //自动装箱
Integer integer4 = 100;
System.out.println(integer3==integer4); //true
Integer integer5 = 200; //自动装箱
Integer integer6 = 200;
System.out.println(integer5==integer6); //false 超过缓冲区大小
}
}
结果:
String类
比是否相等
public class Demo01 {
public static void main(String[] args) {
String name = "hello"; //常量存储在字符串池中,(方法区)
String name1 = "hello"; //常量存储在字符串池中,(方法区)
System.out.println(name==name1); //true
//name = "zhangsan"; //在赋值时候并不是直接替换了hello而是
//在方法区的字符串池中又开辟了一块属于zhangsan的空间
//演示字符串的另一种创建方式 会创建对象
String str = new String("java");//这种创建方法会在栈和堆中创建对象
//栈存的堆的地址,堆存的方法区的地址
String str2 = new String("java");
System.out.println(str==str2); //比地址 false
System.out.println(str.equals(str2)); //比数据 true
}
}
结果:
length();返回字符中的长度
charAt(int index);返回某个位置的字符
contains(String str);判断是否包含某个子字符串
tocharArray() ;返回字符串对应的数组
index0f();返回子字符串首次出现的位置
lastIndex0f( );返回字符串最后一 次出现的位置
trim();去掉字符串前后的空格
toUpperCase( );//把小写转成大写 toLowerCase() ;把大写转成小写.
endWith(str) ;判断是否已str结尾, startsWith(str);判断是否已str开头
replace(char old,char new); 用新的字符或字符串替换旧的字符或字符串
split();对字符串进行拆分
substring();截取字符串
例如:
- substring(1);则截取1~最后的字符串
- substring(1,3);则截取1~2之间的字符串(1-3但是不包括3)
补充
public class 方法 {
public static void main(String[] args) {
/*
字符串方法的使用
1. length();返回字符中的长度
2、charAt(int index);返回某个位置的字符
3、contains(String str);判断是否包含某个子字符串
*/
String content = "我是你爸爸我是你爸爸我是你爸爸";
System.out.println(content.length());//5
System.out.println(content.charAt(3));
System.out.println(content.contains("你爸爸"));
System.out.println("=======================");
/*
4、tocharArray() ;返回字符串对应的数组
5、index0f();返回子字符串首次出现的位置
6、lastIndex0f( );返回字符串最后一 次出现的位置
*/
System.out.println(content.toCharArray());
System.out.println(Arrays.toString(content.toCharArray()));
System.out.println(content.indexOf("你"));
System.out.println(content.indexOf("你",1));
System.out.println(content.lastIndexOf("爸"));
System.out.println("=======================");
/*
/7. trim();去掉字符串前后的空格
/8. toUpperCase( );//把小写转成大写toLowerCase() ;把大写转成小写.
/9、 endWith(str) ;判断是否已str结尾, startWith(str);判断是否已str开头
*/
String content2 = " hello world";
System.out.println(content2.trim()); //只去掉前后的空格
System.out.println(content2.toUpperCase());
System.out.println(content2.toLowerCase());
String filename = "hello.java";
System.out.println(filename.endsWith(".java"));
System.out.println(filename.startsWith("hello"));
System.out.println("=======================");
/*
10、replace(char old,char new); 用新的字符或字符串替换旧的字符或字符串
11、split();对字符串进行拆分
*/
content.replace("你爸爸","java");
String say = "java is the best language jaav,as";
//String[] arr = say.split(" "); //用空格分隔
String[] arr = say.split("[ ,]"); //用空格和逗号分隔
System.out.println(arr.length);
for (String s : arr) {
System.out.println(s);
}
///补充两个方法equals 比相等、 a compareTo(b);比大小 (字符前后位置)结果为a-b的ascii码值
System.out.println("========补充========");
String s1 = "hello";
String s2 = "Hello";
System.out.println(s1.equalsIgnoreCase(s2)); //忽略大小写
String s3 = "a";
String s4 = "y";
System.out.println(s3.compareTo(s4));
}
}
结果:
需求:
/*
●已知String str = "this is a text" ;
●1.将str中的单词单独获取出来:
●2.将str中的text替换为practice
●3.在text前面插入-一个easy
●4.将每个单词的首字母改为大写
*/
代码:
public class 需求 {
/*
●已知String str = "this is a text" ;
●1.将str中的单词单独获取出来:
●2.将str中的text替换为practice
●3.在text前面插入-一个easy
●4.将每个单词的首字母改为大写
*/
public static void main(String[] args) {
String str = "this is a text";
System.out.println("1.将str中的单词单独获取出来:");
String[] split = str.split(" ");
for (String s : split) {
System.out.println(s);
}
System.out.println("2.将str中的text替换为practice");
String replace = str.replace("text", "practice");
System.out.println(replace);
System.out.println("3.在text前面插入-一个easy");
String replace1 = str.replace("text", "easy text");
System.out.println(replace1);
System.out.println("4.将每个单词的首字母改为大写");
for (int i = 0; i < split.length; i++) {
char c = split[i].charAt(0);
char c1 = Character.toUpperCase(c);
String s = c1 + split[i].substring(1); //substring为截取
System.out.println(s);
}
}
}
结果:
StringBuffer 和StringBuilder
可变长字符串
StringBuffer和StringBuilder的使用
和String区别:
(1)效率比String高
(2)比String节省内存
(3)StringBuffer比StringBuilder 效率低
(4)StringBuffer比StringBuilder 安全
(5)StringBuffer适合多线程
(6)StringBuilder 适合单线程
append();追加
insert(); 添加
replace();替换
delete()删除
delete(0,sb.length())清空
public class StringBuffer和StringBuilder {
/*
StringBuffer和StringBuilder的使用
和String区别:
(1)效率比String高
(2)比String节省内存
(3)StringBuffer比StringBuilder效率低
(4)StringBuffer比StringBuilder安全
*/
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//StringBuilder sb = new StringBuilder();
//1.append();追加
sb.append("java牛皮");
System.out.println(sb.toString());
sb.append("java真香");
System.out.println(sb.toString());
//2.insert(); 添加
sb.insert(0,"我在最前面");
System.out.println(sb.toString());
//3.replace();
sb.replace(0,5,"hello");
System.out.println(sb.toString());
//4.delete()删除
sb.delete(0,5);
System.out.println(sb.toString());
//5.清空
System.out.println("清空");
sb.delete(0,sb.length());
System.out.println(sb.toString());
System.out.println(sb.length());
System.out.println("清空了");
}
}
结果:
效率比较:
//验证StringBuilder效率比String
public class 效率 {
public static void main(String[] args) {
//开始时间
long start = System.currentTimeMillis();
String string = "";
for (int i = 0; i < 99999; i++) {
string+=i;
}
System.out.println(string);
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
//开始时间
long start1 = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 99999; i++) {
sb.append(i);
}
System.out.println(string);
long end1 = System.currentTimeMillis();
System.out.println("用时:"+(end1-start1));
}
}
结果:
BigDecimal
subtract(): 减法
add():加法
multiply():乘法
divide():除法
public class bigDecimal {
public static void main(String[] args) {
/*
double 和float类型存储的值为近似值,经过算数会出现误差
*/
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
//面试题
double result = (1.4-0.5)/0.9;
System.out.println(result);
// BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//subtract(): 减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);
//add():加法
BigDecimal add = bd1.add(bd2);
System.out.println(add);
//multiply():乘法
BigDecimal multiply = bd1.multiply(bd2);
System.out.println(multiply);
//divide():除法
BigDecimal divide = new BigDecimal("1.4")
.subtract(new BigDecimal("0.4"))
.divide(new BigDecimal("0.2"));
System.out.println(divide);
//除不尽会报异常(设置保留几位小数和方法) //此处为保留三位小数和四舍五入
BigDecimal divide1 = new BigDecimal("20").divide(new BigDecimal("3"), 3, BigDecimal.ROUND_HALF_UP);
System.out.println(divide1);
}
}
Date类
getTime() 获得时间戳
before(),after()
compare()
equals()
public class date {
public static void main(String[] args) {
//1.创建对象
//今天
Date date1 = new Date();
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());
//昨天
Date date2 = new Date(date1.getTime() - (60 * 60 * 24 * 1000));
System.out.println(date2.toLocaleString());
//2.方法after before (比较大小,返回布尔值)
boolean after = date1.after(date2);
System.out.println(after);
boolean before = date1.before(date2);
System.out.println(before);
//比较 compareto 前面减后面的毫秒值 正数1 负数-1
int i = date1.compareTo(date2);
System.out.println(i);
//比较是否相等 equals
boolean equals = date1.equals(date2);
System.out.println(equals);
}
}
结果:
LocalDate,LocalTime,LocalDateTime类
now()获取当前时间
LocalDateTime.of ()设置时间
getXXX() 获取单个值
withXXX()修改单个值
plusXXX()加单个值
minus()减单个值
public class localDateTime {
public static void main(String[] args) {
//当前的日期、时间、日期+时间
LocalDate now = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(now);
System.out.println(time);
System.out.println(localDateTime);
//of方法指定日期时间 (不会有偏移量)
LocalDateTime of = LocalDateTime.of(2020, 8, 10, 9, 37, 24);
System.out.println(of);
System.out.println("====================");
//getXXX() 获取
System.out.println(localDateTime.getDayOfWeek()); //星期
System.out.println(localDateTime.getDayOfMonth()); // //获取每月的第几日
System.out.println(localDateTime.getMonthValue()); //月份数字表示
System.out.println(localDateTime.getMonth()); //月份
System.out.println(localDateTime.getDayOfYear()); //获取一年中的第几天
//体现不可变性 withXXX()修改相关值
LocalDateTime localDateTime1 = localDateTime.withMonth(6);
System.out.println(localDateTime1);
System.out.println(localDateTime);
System.out.println("====================");
// plusXXX()加
LocalDateTime localDateTime2 = localDateTime.plusMonths(2);
System.out.println(localDateTime2);
//minus()减
LocalDateTime localDateTime3 = localDateTime.minusMonths(2);
System.out.println(localDateTime3);
}
}
结果:
Canlendar类
获取时间
月份为0-11
星期日期:周日是1。。。。。周六是七
修改时间
public class canlendar {
public static void main(String[] args) {
//创建calendar对象
Calendar canlendar = Calendar.getInstance();
System.out.println(canlendar.getTime().toLocaleString());
System.out.println(canlendar.getTimeInMillis()); //打印毫秒值1970年至今
System.out.println(canlendar.getTime());
//2.获取时间信息
//获取年
int year = canlendar.get(Calendar.YEAR);
//月(0~11)
int month = canlendar.get(Calendar.MONTH);
//日
int day = canlendar.get(Calendar.DAY_OF_MONTH); //和Calendar.DATE都可以
int day1 = canlendar.get(Calendar.DATE);
//小时
int hour = canlendar.get(Calendar.HOUR_OF_DAY);//HOUR 12小时 HOUR_OF_DAY 24小时
//分钟
int minute = canlendar.get(Calendar.MINUTE);
//秒
int second = canlendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+minute+second);
System.out.println(day1);
//3. 修改时间
Calendar Calendar2 = Calendar.getInstance();
Calendar2.set(Calendar.DAY_OF_MONTH,5);
System.out.println(Calendar2.getTime().toLocaleString());
//4. add方法修改时间
Calendar2.add(Calendar.HOUR,-1);
System.out.println(Calendar2.getTime().toLocaleString());
//5.补充方法
int max = Calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);//获取本月最大日期
int min = Calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);//获取本月最小日期
System.out.println(max);
System.out.println(min);
}
}
结果:
SimpleDateFormat类
日期格式化输出
public class demo01 {
public static void main(String[] args) throws ParseException {
//创建SimpleDateFormat对象 y 年 m月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
//2.创建date
Date date = new Date();
//格式化date(日期转换为字符串)
String str = sdf.format(date);
String str1 = sdf1.format(date);
System.out.println(str);
System.out.println(str1);
//解析 (把字符串转成日期)
Date date2 = sdf1.parse("1990/05/01");
System.out.println(date2);
}
}
结果:
System类
arraycopy:数组的复制
System.currentTimeMillis()毫秒时间,可算出程序运行时间
System.gc();告诉垃圾回收器回收参数(可能会回收可能不回收)(回收调用object.finalize()方法)
System.exit(0);退出jvm、 0为正常退出,,非0为非正常退出
public class Demo01 {
public static void main(String[] args) {
/*
1.arraycopy:数组的复制
src:源数组
srcPos:从哪个数组开始复制
dest:目标数组
destPos:目标数组的位置
length:复制的长度
*/
int[] arr = {20,18,15,16,26,45,90,57};
int[] dest = new int[8];
System.arraycopy(arr,0,dest,0,arr.length);
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
//2.System.currentTimeMillis()毫秒时间,可算出程序运行时间
System.out.println(System.currentTimeMillis());
//3.System.gc();告诉垃圾回收器回收参数(可能会回收可能不回收)
Student aaa = new Student("aaa", 19);
new Student("bbb", 19);
new Student("ccc", 19);
System.gc();
//4.退出jvm、 0为正常退出,,非0为非正常退出
System.exit(0);
System.out.println("程序结束了。。。。");//由于已退出,,所以不会输出
}
}
结果: