getclass()类
判断两个引用中的实际存储对象类型是否一致。
使用方法:
Class class1=s1.getClass();
Class class2=s2.getClass();
if(class1==class2){
...
}else{
...
}
hashCode
返回该对象在内存中的地址,相同对象返回的哈希值一致。
s1=s2
System.out.println(s1.hashcode=s2.hashcode)
true
equals方法
比较两个对象内容是否相同。返回值为布尔类型。
Integer integer1=new Integer(100);
Integer integer2=new Integer(100);
System.out.println(integer1.equals(integer2));//结果为true,如果括号内的数值不一致,则返回false
拓展:equals和“==”有什么区别?
-
对象类型不同。equals()是Object超类的方法,而”==“是操作符。
-
比较的对象不同。equals()是用来检测两个对象的内容是否相同。
==:用于比较引用和比较基本数据类型时具有不同的功能,具体如下:
(1)基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。
(2)引用数据类型:比较的是引用的地址是否相同,比如说新建了两个User对象,比较的是两个User的地址是否一样。
3.运行速度不同
1、equals():没有==运行速度快。
2、:运行速度比equals()快,因为只是比较引用。
装箱/拆箱
早期java的缺陷。准确来说java不完全是面向对象,因为存在基本类型。
装箱:把基本类型转换为引用类型
拆箱:把引用类型转换成基本类型
//装箱 两种方法
int num1=100
Integer integer1= new Integer(100);//或者(num1)
Integer integer2=Integer.valueOf(num1);
//拆箱
Integer integer =new Integer(14);
int age= integer.intValue();
//JDK1.5之后引入自动拆箱装箱
Integer integer3=10;//自动装箱
int age2=integer3;//自动拆箱
基本类型和字符串的转换
基本类型转字符串:Integer.toString(n1)
字符串转基本类型:Float.parseFloat(Str1)
注意:字符串转换为布尔类型时,会把非true的任意字符串输出为false!!!
//基本类型转字符串
int n1=13;
String str1=n1+"";//结果为13
String s2 =Integer.toString(n1)//结果为13
字符串转基本类型
String str2= "123.1";
float n2=Float.parseFloat(str2);
//字符串转布尔类型
String str3="truee";
boolean a=Boolean.parseBoolean(str3);
System.Out.println(a)//结果为false
String类
-
字符串是常量,创建后不能改变。
-
字符串字面值存储在字符串池中,(字符串池在方法区里),可以被共享。
-
String s="hello"产生一个对象,在字符串池中存储。
-
String s=new String(“hello”)产生两个对象,一个在堆,一个在字符串池里。
String类方法
String s=" Java123你好,Java "
public int length():返回字符串的长度。例如:s.length //结果为18
public char charAt(int index):根据下标获取字符串的某个字符。注意返回值为char!。例如:s.charAt(0)//结果为j
public boolean contains(String str):判断字符串里是否有str,返回值为布尔类型。例如:s.contains("好")// 结果为true
public char[] toCharArray():把字符串转换为数组。
public int indexOf(String str):查找str第一次出现的下标,若存在,返回下标的值,若不存在,返回值为-1。例如:s.indexOf("java")//结果为0
public int indexOf(String str,int a):可按照从哪个地方开始查找,例如java结束后为3,则s.indexOf("Java",3)//结果为14
public int lastIndexOf(String str):查找str最后一次出现的下标。若不存在返回-1,跟indexOf一样用法。
public String trim():去掉字符串前后的空格,注意是前后,不是中间。
public String toUpperCase(LowerCase):把字符串的小写字母转换成大写,LowerCase为小写。例如:s.toUpperCase() //结果为JAVA123你好,JAVA
public boolean endWith(String str):判断字符串是否以str为结尾,返回值为布尔类型。判断开头用 startWith()。
public String replace(char oldChar,char newChar):替换字符串,(原来的,新的字符串)
public String[] split(String str): 以str字符为分割,将字符串分隔开。
String str3="java 你 好"; String s[]=str3.split(" ");//中间存在1个空格 for (String string:s ) { System.out.println(string); } //输出结果为如下: java 你 好
//如果为想多个分隔符作分割,则添加"[]"中括号内填分割符,如需多个相同的分割符,例如两个空格,只需在之前的条件下加一个“+”号 String str3="java,你 好"; String s[]=str3.split("[ ,]+"); for (String string:s ) { System.out.println(string); }//输入结果如下: java//没有逗号!!! 你 好
subString():
(1)substring是用来截取字符串的,根据参数的个数不同,方法含义也不同;
(2)substring(0,2)这个只含开头不含结尾,因此截取是截取两个字符,从第一个到第二个字符,不包含第三个。
(3)substring(2)这个表示截掉前两个,得到后边的新字符串。
String str="hello World"; String s1=str.substring(0,5);//结果为hello String s2=str.substring(6)//意思是去掉前面6个字符,结果为World
补充方法 equals和compareTo()
equals:比较值 equalsIgnoreCase:无视大小写
equalsIn
compare():比较大小
- 如果字符串长度一致,返回的是ASCII的差值。如果首字符相同,则对比下一位直到不相同为止,返回不同对比的字符的ASCII的差值。
- 如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值。
//equals String str1="hello"; String str2="HELLO"; System.out.println(str1.equals(str2));//结果为false //equalsIgnoreCase String str1="hello"; String str2="HELLO"; System.out.println(str1.equalsIgnoreCase(str2));//结果为true
//如果首字符相同,则对比下一位直到不相同为止,返回不同对比的字符的ASCII的差值 String s1="abc"; String s2="xyz"; System.out.println(s1.compareTo(s2));//结果为-23 //如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值。 String a1 = "aa"; String a2 = "aa12345678"; System.out.println(a1.compareTo(a2));//结果为-8
StringBuffer和StringBuild类
可变长字符串。和String的区别:效率比String高,速度要比String快,比String节省内存,在JDK1.0引入。
StringBuffer和StringBulid,前者线程安全,速度比较慢。后者线程不安全,速度更快,在JDK1.5引入。
四种常用方法:append(追加)、insert(插入)、replace(int start ,int end,String str)、delete(int start,int end),用法详见代码。
//两者用法一样。 StringBuilder sb = new StringBuilder(); sb.append("hello!"); System.out.println(sb.toString());//结果为hello! sb.append("world"); System.out.println(sb.toString());//结果为hello!world System.out.println(sb.insert(0,"我在最前面"));//结果为:我在最前面hello!world System.out.println(sb.replace(0,5,"你好"));//结果为:你好hello!world System.out.println(sb.delete(0,2));//结果为:hello!world
BigDecimal类
BigDecimal r1 = new BigDecimal("1.0");//必须记住括号内为字符串类型!!! BigDecimal r2 = new BigDecimal("0.9"); BigDecimal r3=r1.subtract(r2);//- System.out.println(r3); BigDecimal s1 = new BigDecimal("1.5"); BigDecimal s2 = new BigDecimal("0.7"); System.out.println(s1.add(s2));//+ BigDecimal s3 = new BigDecimal("1.7"); BigDecimal s4 = new BigDecimal("0.1"); System.out.println(s3.multiply(s4));//* //输出(1.4-0.5)/0.9 BigDecimal r5 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9")); System.out.println(r5); //如果除不尽,会抛出异常。这时就要用到四舍五入的方法,2是保留两位小数,ROUND_HALF_UP为Bigdecimal的四舍五入方法!记忆!! BigDecimal divide = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP); System.out.println(divide);//结果为:3.33
date类()
当创建一个Date类对象时,对象已经获取到当前的时间!
Date date1 = new Date();//获取到时间。 System.out.println(date1.toLocaleString());//结果为当前时间 Date date2 = new Date(date1.getTime()-60*60*24*1000);//今天减去一天等于昨天 System.out.println(date2.toLocaleString());//结果为昨天 System.out.println(date1.before(date2));//返回布尔类型,false int i = date2.compareTo(date1); System.out.println(i);//昨天减去今天,结果为-1
Calendar类()
提供各种获取或设置日历字段的方法。
Calendar类构造方法为:protected Calendar(),因此无法通过new来创建对象,通过调用静态方法static Calendar getInstance()来创建。
static Calendar getInstance():使用默认时区和区域获取到当前日历。
void set():设置日历的年月日时分秒。
int get():返回日历的某个(年月日时分秒)值。
void setTime():设置日历的某个值。Date-Calendar
void getTime():返回日历的某个值。Claendar-Date
void add():修改日历某个值。可以add负数!
long getTimeInMillies():返回日历的毫秒数。
int getActualMaximum():返回日历某个值的最大值。
int getActualMinimum():返回日历某个值的最小值。
Calendar calendar=Calendar.getInstance();//注意,这里的getInstance的方法已经返回了一个calendar的对象,所以直接Calendar.方法就行了 System.out.println(calendar.getTime().toLocaleString());//2022-10-31 15:43:31 System.out.println(calendar.getTimeInMillis());//1667202211080(毫秒值) int year =calendar.get(Calendar.YEAR); int month =calendar.get(Calendar.MONTH); int day =calendar.get(Calendar.DAY_OF_MONTH); int hour= calendar.get(Calendar.HOUR_OF_DAY); int minute =calendar.get(Calendar.MINUTE); int second=calendar.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");2022年10月31日15时50分28秒 //注意!外国的算月是从0-11月,所以表示中国的方式得在month+1 Calendar calendar1=Calendar.getInstance(); calendar1.set(Calendar.DAY_OF_MONTH,30);//把日改为30号 System.out.println(calendar1.getTime().toLocaleString());2022-10-30 15:50:28 calendar1.add(Calendar.DAY_OF_MONTH,-4);//减去四天 System.out.println(calendar1.getTime().toLocaleString());2022-10-26 15:50:28 calendar1.add(Calendar.MONTH,+1);//增加了一个月 int max=calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);//11月最大值为30号 System.out.println(max);
SimpleDateFormat()类
把日期按照某种格式去输出。
可以把这个日期转换成文本(字符串)去输出,也可以把一个字符串解析成详细的年月日乃至星期几(文本--->日期)。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");//括号内填模板 Date date = new Date(); System.out.println(sdf.format(date));//2022/10/31 16:39:24 Date date1 = sdf1.parse("1990/05/10");//把字符串强制转为日期,即解析日期 System.out.println(date1);//Thu May 10 00:00:00 CDT 1990精确到星期四
System类
arraycopy():复制数组,可实现元素覆盖。5个参数(源数组名,源数组从第几开始复制,目标数组名,覆盖目标数组的第几个元素,长度(复制多少个))
currentTimeMillis():获取自1970年到现在有多少毫秒,可用于计算程序运行时间!
exit():退出jvm。有参数,如果是0,则正常退出程序,如果是非0,则异常退出jvm。
//数组的复制
int []a={1,2,3,4,5};
int[] dest=new int[5];
System.arraycopy(a,3,dest,0,2);
System.out.println(Arrays.toString(dest));//[4, 5, 0, 0, 0]
//打印从1970年距离现在有多少毫秒
System.out.println(System.currentTimeMillis());//1667209242799
long start=System.currentTimeMillis();
for (int i = -999; i < 9999999; i++) {
for (int j = 0; j < 999999; j++) {
int result=i+j;
}
}
long end =System.currentTimeMillis();
System.out.println("用时:"+(end-start)+"毫秒");//用时:4毫秒
//退出JVM
System.exit(0);
System.out.println("程序退出了.....");//不输出,因为提前退出JVM了
标签:常用,String,int,System,字符串,println,out
From: https://www.cnblogs.com/1234kun/p/16846621.html