1.Object类
- Object类是类层次结构的根,Java中所有的类都继承自这个类
- Object类的两个特征:
Object类是Java中唯一没有父类的类
其他所有的类都继承了Object类中的方法,所以其方法的重要性不言而喻
如果在类的声明中未使用rxtends关键字指明其父类,则默认父类为Object类
public class Person{…}
等价于:public class Person extends Object{…}

- 调用克隆方法

- 调用tostring方法

- = =操作符
(1)引用类型比较引用(是否指向同一个对象)
Person p1=new Person();
Person p2=new Person();
if(p1= =p2){…}
(2)基本类型比较值
int a=5;
if(a= =6){…}
注:用“ = =”进行比较时,符号两边的数据类型必须一致(可自动转换的基本数据类型除外),否则编译出错
例:

运行结果:true true

运行结果:false

运行结果:true
将Demo3赋给Demo4 Demo4指向Demo1 - equals方法
(1)是Object类的方法,由于所有类都继承Object类,也就继承了equals()方法
(2)只能比较引用类型
(3)在Object类的定义中,其作用与“= =”相同,比较是否指向同一个对象 格式:obj1.equals(obj2)
注:对类File,String,Date,封装类(Wrapper Class)及很多重写了equals()方法的类来说,是比较类型及内容而不考虑引用是否指向同一个对象
例:


- toString方法
toString()方法在Object类中定义,其返回值是String类型,内容为类名以及该对象的引用地址
2.String类
-
字符串的比较 ,= = equals方法
new String(" "); = " ";
String str1 = “abc”;首先会在常量区中查找abc,如果找到abc,就把abc字符串引用地址赋给str1;如果没有找到,就把abc放到常量区,然后在内存中开辟一个str1的空间,存放引用地址
new String(“abc”);开辟一个str1的空间,然后再查找
总结:字符串使用建议选择 String str = “ ”;



运行结果:a123c

运行结果:true false

运行结果:1 str2在前面

运行结果:-1

运行结果:4 8

运行结果:,共和国,合同法

运行结果:共和国,合同法

运行结果:共和国

运行结果:中华人民

运行结果:5

运行结果:18

运行结果:4



运行结果:人

运行结果:华

运行结果:我爱学习 -
例题:请统计“nba”在字符串“nbaernbatynbauinbaopnba”中出现的次数
解题思路:
①要找的字串是否存在,如果存在获取其出现的位置。这个可以用indexof完成
②如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,而剩余字符串的起始位是出现位置+子串的长度
③以此类推,通过循环完成查找,如果找不到就-1,并对每次找到用计数器记录

3.StringBuffer类
StringBuffer:就是字符串缓冲区,用于存储可变字符序列的容器
特点:可以对字符串进行修改;长度可变 -
StringBuffer VS StringBuilder
StringBuffer:可变字符序列,线程安全,效率低
StringBuilder:可变字符序列,线程不安全,效率高 -
什么叫线程安全?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量,静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。 -
线程同步:就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。
-
StringBuffer类的常用方法
①构造
StringBuffer();
StringBuffer(int size);
StringBuffer(String str);
②添加
StringBuffer append(data);
StringBuffer insert(index.data);
③删除
StringBuffer delete(start,end);包含头,不包含尾
StringBuffer deleteCharAt(int index);删除指定位置的元素
④查找
char charAt(index);
int indexOf(string);
int lastIndexOf(string);
⑤修改
StringBuffer replace(start,end,string);
void setCharAt(index,char);


赋值:run as→ run configurations→java application→arguments

运行结果:

4.封装类(包装类)
1.包装类:
①面向对象编程思想
②基本数据类型变量,不能用对象使用的问题
③传输过程中对象传输,容器中皆为对象
2.装箱和拆箱的过程(手动,自动)

装箱:基本数据类型自动转换成对应的包装类
拆箱:包装类自动转换成对应的基本数据类型
装箱举例:

拆箱举例:

- 包装类的常用方法:
实现int和Integer类之间的转换
int n = 10;
Integer in = new Integer(100);
//将int类型转换为Integer类型
Integer in 1 = new Integer(n);
//将Integer类型的对象转换为int类型
int m = in.intValue();
3.基本数据类型和String类型的转换
- 基本数据类型转换为String
① + " ";方式

②String.valueof()

- String类型转换成基本数据类型(包装类)
包装类.parseXXXX(字符串)

5.Date&DateFormat类 - Date类在java.util包中。使用Date类的无参构造方法创建的对象可以获取本地当前时间
- SimpleDateFormat可用来实现日期的格式化
public SimpleDateFormat(String pattern):使用参数pattern指定的格式创建一个对象
public String format(Data date):按照构造方法中指定的pattern格式化时间对象date


字符串转换成Date类
创建方法:

调用:

6.java.util.Calendar日历类
Calendar是一个抽象基类,主用于完成日期字段之间相互操作的功能
获取Calendar实例的方法:
➢使用Calendar.getlnstance()的方法
➢调用他的子类GregorianCalendar的构造器
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_ OF_ DAY、MINUTE、SECOND
➢public void set(int field.int value)
➢public void add(int field.int amount)
➢public final Date getTime()
➢public final void setTime(Date date)

- java.sql.Date 只能获取年月日

- java8新特性日期
旧的: Date非线程安全的。 API设计的比较乱。.
java8:
java. time包下:
LocalDate :年月日
LocaLDateTime:年月日时间
LocatTime:时间

运行结果:

运行结果:加1 2021
减一 2019

运行结果:加月份:9

运行结果:true false

运行结果:

运行结果:


运行结果:
299

被折叠的 条评论
为什么被折叠?



