W
e
l
c
o
m
e
: )

Java基础

JDK JRE JVM

Jdk:
Java Develepment Kit java开发工具
JRE:
Java Runtime Environment java运行环境
JVM:
java Virtual Machine java虚拟机
jdk 包括jre+jvm
运行java程序需要-- jre
开发java程序--- jdk

==和equals

双等于对比的是栈中的值,基本数据类型(int short float long double byte boolean char)比较的是变量值
引用类型是堆中内存对象的地址
equals 底层是==,通常会重写。Integer和String重写了equals,使其为值比较

例:String str1="abc";
String str2=new String("abc");
sout(str1==str2);//false 第一种方式,建立的str1会放在常量池中(栈),第二中创建的str2会放在堆内存中(1.8之前,1.8之后都在堆里)
sout(str1.equals(str2));//true

Final

final:
- 修饰类:类不可以被继承
- 修饰方法:方法不能被子类重写,但是可以重载
- 修饰变量: 一旦赋值则不可以改变

final是否可以修饰抽象类
答:不可以,抽象类的声明就是为了被继承,如果被final修饰怎不可以被继承,前后矛盾,编译器会报错

String StringBuffer StringBulider

String 是final修饰的,不可变,每次操作都会产生新的String对象
StringBuffer StringBulid都是在原对象上进行操作
StringBuffer 是线程安全的(所有方法均被synchronized修饰) StringBulider是线程不安全的
性能:StringBulider>StringBuffer>String
经常修改字符串内容的使用StringBuffer StringBulider,优先使用StringBulider,多线程使用共享变量时使用StringBuffer

重载和重写

1:作用对象不同
重载:作用于同一类
重写:作用于具有继承关系的两个类
2:参数对象不同
重载:方法命必须相同,参数类型相同,个数不同,顺序不同,返回值和访问修饰符可以不同
重写:方法命必须相同,参数列表必须相同,返回值范围小于等于父类,访问修饰符必须大于等于父类,private修饰的方法不可以被重写

接口和抽象类

抽象类中可以包含普通方法,接口中的默认方法都是public abstruct 修饰的
抽象类只能被单继承,但是类可以实现多个接口
抽象类中的成员变量可以是各种类型的,接口中的成员变量只能是public static final修饰的
抽象类中可以有main方法并且运行,接口不能有
抽象类中可以有构造函数,接口不能有

普通类和抽象类的区别?
普通类中不能包含抽象方法,抽象类中可以包含普通方法
抽象类不能直接实例化,普通类可以直接实例化

hashcode()和equals()

hashcode()

hashcode()的作用是获取哈希码(散列码),返回的是一个int。这个哈希码的作用是确定该对象在哈希表中(堆中)的索引位置。哈希表的存储方式为key-value键值对的方式。特点是根据键快速的找到对应的值

为什么要有hashcode()?

以hashset查重为例:
对象加入hashset时,hashset先计算对象的hashcode的值,通过hashcode判断位置上是否有值,如果没有值,则插入值,如果有值,则调用equals()来判断对象是否相等,如果相同,就不会插入成功,如果不同,就重新散列到其他位置。
如果两个对象相同,hashcode()的值一定相同。
hashcode()相同,两个对象不一定相同
注意:重写equals,也必须重写hashcode
因为hashcode定义,两个对象相同,hashcode的值必须相同。
如果重写了equals,没有重写hashcode,默认调用的object的hashcode,则会产生矛盾

String类中的常用方法

  • indexOf():返回置顶字符的索引
  • charAt():返回指定索引的字符
  • replace():字符串替换
  • trim():去除字符串两端空白
  • split():分割字符串,返回分割后的字符串数组
  • length():返回字符串长度
  • toLowerCase():将字符串转为小写
  • toUpperCase():将字符串转为大写
  • subString():截取字符串
posted @ 2021-08-15 18:31  rmxob  阅读(45)  评论(0)    收藏  举报