1.getClass
//1.getClass方法——判断类型是否相同
1.1
package ceshi;
public class Demo06 {
private String name;
private int age;
public Demo06(String bbb, int i) {
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
1.2
package ceshi;
import base.oop.Demo03.Student;
public class Demo07 {
public static void main(String[] args) {
Demo06 demo06 = new Demo06("aaa",10);
Demo06 demo062 = new Demo06("bbb",20);
//判断demo061和demo062是不是同一个类型
Class class1 = demo06.getClass();
Class class2 = demo062.getClass();
if (class1==class2){
System.out.println("是同一个类型");
}else {
System.out.println("不是一个类型");
}
}
}
2.hashCode
//2.hashCode方法——判断对象是否相同,即对应的地址是否相同
2.1
同1.1
2.2
package ceshi;
import base.oop.Demo03.Student;
public class Demo07 {
public static void main(String[] args) {
//1.getClass方法——判断类型是否相同
Demo06 demo06 = new Demo06("aaa",10);
Demo06 demo062 = new Demo06("bbb",20);
//判断demo061和demo062是不是同一个类型
Class class1 = demo06.getClass();
Class class2 = demo062.getClass();
if (class1==class2){
System.out.println("是同一个类型");
}else {
System.out.println("不是一个类型");
}
//2.hashCode方法——判断对象是否相同
System.out.println(demo06.hashCode());
System.out.println(demo062.hashCode());//得出的结果不一样
Demo06 demo063=demo062;
System.out.println(demo063.hashCode());
//3.
}
}
3toString方法
/*3.toString方法——alt+ins直接重写Generate重写toString方法,
即可得出(Demo06{name='aaa', age=10} Demo06{name='bbb', age=20})*/
System.out.println(demo06.toString());
System.out.println(demo062.toString());
4equals方法(比较和==的区别)
这个我讲不好,建议看看这个大神的文章,(仅供学习,这里只是参考意见用,希望作者理解)你们直接在优快云搜索就可以,附上图片,找不到可以留言
尊重作者,是一个优秀的人,承认还是别人比较优秀
5finalize方法
•当对象被判定为垃圾对象时,由JvM自动调用此方法,用以标记垃圾对象,
进入回收队列。
•垃圾对象:没有有效引用指向此对象时,为垃圾对象。
• 垃圾回收:由Gc销毁垃圾对象,释放数据存储空间。
自动回收机制:JVM的内存耗尽,
一次性回收所有垃圾对象。
• 手动回收机制:使用System.gc0:通知JVM执行垃圾回收。
package ceshi;
public class Demo09 {
public static void main(String[] args) {
Demo08 suibian = new Demo08("suibian", 10);
Demo08 suibian1 = new Demo08("suibian1", 10);
Demo08 suibian2 = new Demo08("suibian2", 10);
new Demo08("suibian3", 10);
new Demo08("suibian4", 10);
//回收垃圾
System.gc();
System.out.println("回收垃圾");
suibian.aa(10);
System.out.println(suibian.toString());
}
}
6.String常用方法
6.1总结:
//length(); 返回字符串的长度
//charAt(int index);返回某个位置的字符
//contains(String str);判断是否包含某个字符串
//toCharArray();返回字符串对应的数组,遍历字符串中的所有内容
//indexOf();返回字符串首次出现的位置
//lastIndexOf();返回字符最后一次出现的位置
//trim();去掉字符串前后的空格
//toUpperCase();//把小写转换成大写、、、toLowerCase();把大写转换成小写 //endWith(str);判断是否以str结尾,startWith(str);判断是否以str开始
//replace(char old,char new);用新的字符串代替旧的字符串
//split();对字符串进行拆分
//两个方法,equals和compareTo();比较大小
6.2代码一(多数方法的集合代码)
package ceshi;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Locale;
public class Demo10 {
public static void main(String[] args) {
//length(); 返回字符串的长度
//charAt(int index);返回某个位置的字符
//contains(String str);判断是否包含某个字符串
String a="这个东西真的都很无聊啊,东西";
System.out.println(a.length());
System.out.println(a.charAt(0));
System.out.println(a.contains("东西"));
System.out.println("========================================");
//toCharArray();返回字符串对应的数组,遍历字符串中的所有内容
//indexOf();返回字符串首次出现的位置
//lastIndexOf();返回字符最后一次出现的位置
System.out.println(Arrays.toString(a.toCharArray()));
System.out.println(a.indexOf("东西"));
System.out.println(a.lastIndexOf("东西"));
System.out.println("========================================");
//trim();去掉字符串前后的空格
//toUpperCase();//把小写转换成大写、、、toLowerCase();把大写转换成小写
//endWith(str);判断是否以str结尾,startWith(str);判断是否以str开始
String a1=" hello world ";
String a2=" HELLO WORLD ";
System.out.println(a1.trim());
System.out.println(a1.toUpperCase());
System.out.println(a2.toLowerCase());
System.out.println(a1.endsWith("d"));
//replace(char old,char new);用新的字符串代替旧的字符串
//split();对字符串进行拆分
System.out.println(a.replace("东西","西东"));
System.out.println(a.replace(0,4,"hello");//在位置之间修改字符
String a3="java is the best language,java..suibian";
/* 这里是只有一个空格,中括号内,一个空格一个逗号一个点,表示逗号和空格都可以当做拆分的条件
中括号后面添加一个“+”符号代表可以出现多个空格*/
String[] arr=a3.split("[ , .]+");
for (String s : arr) {
System.out.println(s);
}
//两个方法,equals和compareTo();比较大小
System.out.println("================================");
String s1="hello";
String s2="HELLO";
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写比较内容,true
String s3="abc";//97
String s4="xyz";//120
System.out.println(s3.compareTo(s4));//97-120=-23,就是s3-s4的结果
String s5="abc";//97
String s6="abcxyz";//120
System.out.println(s5.compareTo(s6));//不是比排序的时候比的就是字符串的长度,这里的结果为-3
//在b的前面插入一个xyz
String s7="abc";
System.out.println(s7.replace("b", "xyzb"));
System.out.println("============补充下面的这个===============================");
String[] b1=a1.split("[ ]+");
for (String s : b1) {
System.out.println(s.toUpperCase());
}
}
}
6.3代码二(StringBuilder )
package neibulei;
public class Demo11 {
public static void main(String[] args) {
//StringBuilder stringBuilder = new StringBuilder();和StringBuffer效果是一样的
//stringBuilder效率高于String
StringBuffer a = new StringBuffer();
//1.append();追加
a.append("第一个追加的");
System.out.println(a.toString());
a.append("第二个追加的");
System.out.println(a.toString());
//2.insert();添加,但是是在某个位置添加
System.out.println(a.insert(0, "真的不错"));
//3.replace();替换
a.replace(0,4,"hello");//替换0-4之间的字符变为hello
System.out.println(a.toString());
//4.delete();删除
a.delete(0,4);//删除0-4之间的字符
System.out.println(a.toString());
a.delete(0,a.length());//清空
System.out.println(a.length());
}
}
7.BigDecimal的使用
特点:高精度的计算
7.1正常的加减乘除法
package neibulei;
import java.math.BigDecimal;
public class Demo12 {
//BigDecimal精确计算浮点数,计算之间将会没有误差
public static void main(String[] args) {
double a=1.0;
double a1=0.9;
System.out.println(a-a1);
//面试题
double result=(1.4-0.5)/0.9;
System.out.println(result);//结果等于0.9999
//BigDecimal精确的浮点数计算
BigDecimal a2 = new BigDecimal("1.0");
BigDecimal a3 = new BigDecimal("0.9");
BigDecimal a4 = a2.subtract(a3);//加法
BigDecimal a5 = a2.add(a3);//减法
BigDecimal a6 = a2.multiply(a3);//乘法
BigDecimal a7 = new BigDecimal("10")//除法
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal(0.9));
System.out.println(a7);
System.out.println("========================================");
/* BigDecimal a8 = new BigDecimal("10").divide(new BigDecimal("3"),1,BigDecimal.ROUND_DOWN);
//除不尽的时候保留两位小数四舍五入
System.out.println(a8);
*/
}
}
7.2DecimalFormat除法的保留数位
详情参考:
package neibulei;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Demo13 {
public static void main(String[] args) {
DecimalFormat b1 = new DecimalFormat("0.00");
float b2=10;
float b3=3;
System.out.println(b1.format(b2/b3));
DecimalFormat df1 = new DecimalFormat("0.0");
DecimalFormat df2 = new DecimalFormat("#.#");
DecimalFormat df3 = new DecimalFormat("000.000");
DecimalFormat df4 = new DecimalFormat("#.###");//最特殊,前面的#代表小数点之前的全部暴露i,后面的#几个就表示保留几位小数
DecimalFormat df5 = new DecimalFormat(",###");//每隔三位数字用逗号分割开来
System.out.println(df1.format(12.34));
System.out.println(df2.format(12.34));
System.out.println(df3.format(12.34));
System.out.println(df4.format(1234.5678));
System.out.println(df5.format(12345678));
}
}
DecimalFormat详解——仅供参考,不是原创,表示是转载,作为交流学习使用
8Date类
package neibulei;
import java.util.Date;//需要导入才有date的操作
public class Demo14 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toLocaleString());//获取本地化时间,输出结果:2022年1月8日 下午3:48:53
Date date2 = new Date(date.getTime()-(60*60*24*1000));
System.out.println(date2);//中国标准时间,输出结果:Fri Jan 07 15:48:53 CST 2022
System.out.println(date2.toString());//输出结果一样,Fri Jan 07 15:48:53 CST 2022
boolean date3=date.after(date2);
System.out.println(date3);
boolean date4=date.before(date2);
System.out.println(date4);
int d=date2.compareTo(date);
System.out.println(d);
int d1=date.compareTo(date2);
System.out.println(d1);
boolean d2=date.equals(date2);
System.out.println(d2);
}
}
9Calendar
package neibulei;
import java.time.Year;
import java.util.Calendar;
public class Demo15 {
public static void main(String[] args) {
//创建Calendar对象
/*
实例化Calendar对象,获取instance例子,这一句很重要
因为Calendar是接口,不能被实例化,所以通过是实例化calendar,获取Calendar内部的instance例子
的属性,亦或者说是方法,使得calendar具有获取时间getTime的方法和setTime的等等方法
*/
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());//调用calendar方法获取对象
System.out.println(calendar.getTimeInMillis());//获取毫秒之内的时间
//2.获取时间信息
//获取年、月、日
System.out.println("==================");
System.out.println(Calendar.getInstance().getTime().toLocaleString());
int year=calendar.get(Calendar.YEAR);//年
int month=calendar.get(Calendar.MONTH);//月,因为设定的原因,系统里面的要小一个月,所以输出的时候需要加1,
int day=calendar.get(Calendar.DAY_OF_MONTH);//日期
int hour=calendar.get(Calendar.HOUR);//12小时
int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小时
int minute=calendar.get(Calendar.MINUTE);//24小时
int second=calendar.get(Calendar.SECOND);//24小时
System.out.println(year+" "+(month+1)+" "+day+" "+hour1+" "+minute+" "+second);
//设定时间
Calendar calendar2=Calendar.getInstance();//实例化Calendar对象,获取
//因为设定月份只有十一个月的原因,系统里面的要小一个月,设置的时候要小一个月
calendar2.set(1998,8,15,20,00,00);//用calendar方法设置时间
System.out.println(calendar2.getTime().toLocaleString());//输出前面一行设置的时间
//增加时间(增加负时间)
calendar2.add(Calendar.MONTH,1);//calendar2的月份月份加1
calendar2.add(Calendar.MONTH,-1);//calendar2的月份月份减1
//补充方法
int a=calendar2.getActualMaximum(Calendar.MONTH);//获取 月份 中的最大值
int a1=calendar2.getActualMinimum(Calendar.MONTH);//获取 月份 中的最小值
System.out.println(a);
System.out.println(a1);
}
}
10SimpleDateFormat(简单的时间格式)
package neibulei;
import java.util.Date;//记得导入两个操作的包
import java.text.SimpleDateFormat;
public class Demo16 {
public static void main(String[] args) throws Exception{
//创建SimpleDateFormat对象 y年M月
//简单的时间格式的获取
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = new Date();
String a=sdf.format(date);
System.out.println(a);
//简单的时间格式设置,把日期转换成字符串
/*与calendar.set方法的效果是一样的,具体如下↓↓↓↓↓↓↓↓↓↓!
Calendar calendar2=Calendar.getInstance();//实例化Calendar对象,获取
//因为设定月份只有十一个月的原因,系统里面的要小一个月,设置的时候要小一个月
calendar2.set(1998,8,15,20,00,00);
//用calendar方法设置时间*/
Date date1 =sdf.parse("1990/03/04");//严格按照yy/MM/dd格式转换,这里因为会有异常,所以主方法要抛出异常
System.out.println(date1);
}
}
11System系统方法
System各种方法
package neibulei;
public class Demo17 {
public static void main(String[] args) {
//数组复制:arraycopy:
/*解释————————
arraycopy:数组的复制
src:源数组
srcPos:从哪个位置开始复制0
dest:目标数组
destPos:目标数组的位置
length:复制的长度
* */
//System.arraycopy(src,srcPos,dest,destPos,length);
int[] arr={20,18,15,8,35,26,45,90};
int[] dest=new int[8];
System.arraycopy(arr,0,dest,0,dest.length);
/* System.arraycopy(arr,4,dest,4,4);*
表示从arr的第5位开始复制,复制在dest的第5位中开始粘贴,长度为4个数字
可以将前面的那个注释掉进行输出结果的尝试
*/
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
//计时
System.out.println(System.currentTimeMillis());
long start=System.currentTimeMillis();
for (int i =-99999999; i < 999999999; i++) {
for (int i1 =-999999; i1 < 999999999; i1++) {
int result=i+i1;
}
}
//获取毫秒数
long end=System.currentTimeMillis();
System.out.println("用时"+(end-start));
//回收垃圾
new Demo18("aaa",19);
new Demo18("bbb",18);
new Demo18("ccc",17);
System.gc();//告诉系统进行回收
//推出jvm
System.out.println("程序还没结束");
System.exit(1);
System.out.println("程序结束了");
}
}
System.gc();类
表示finalize出了问题,所以运行结果有错误,看的时候需要注意,现在这个问题暂时还没解决,继续学习中~
@Override
protected void finalize() throws Throwable {
System.out.println("回收了"+name+" "+" "+age);
}
package neibulei;
public class Demo18 {
private String name;
private int age;
public Demo18(String name, int age) {
/*return name;
return age; */
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Demo18{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
protected void finalize() throws Throwable {
System.out.println("回收了"+name+" "+" "+age);
}
}