
下图单位是bit,非字节 1B=8bit

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”abc”(直接赋一个字面量);其实和String str=new String(“abc”)(通过构造器构造)还是有差异的。
String 字符串常量(final修饰,不可被继承),String是常量,当创建之后即不能更改。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。)
==StringBuffer 字符串变量(线程安全),==其也是final类别的,不允许被继承,其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰)。其自jdk1.0起就已经出现。其toString方法会进行对象缓存,以减少元素复制开销
==StringBuilder 字符串变量(非线程安全)==其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,不同之处在于最后toString的时候,会直接返回一个新对象
内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。
子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。
- class Outer{ //外部类
- class Inner{ //内部类
- }
- }
- class Other{ //外部其他类
- }
Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类:
Public:公共,能被项目中的任何一个Class、Method、Field访问。
Protected:受保护,能被同类或子类访问,不能从外部访问。
Default:默认,只能被同一个包的Class、Method、Field访问。
Private:私有,只能被本类访问
答案:静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
「== 解读」
对于基本类型和引用类型 == 的作用效果是不同的,如下所示:
总结:
==对于基本数据类型,判断是数值是否相等,
对于引用数据类型,判断的是物理位置是否相等
而equals是Object类中的方法,Object是所有类的父类,所以类中都可以使用该方法,
但是,一般情况下,例如String类等,会对equals做重写,所以一般情况下
可以理解为equals是对比两个对象的内容是否一致
不对,两个对象的 hashCode() 相同,equals() 不一定 true。
final意为最终的,
修饰类:该类则无法被继承
修饰方法:该方法则无法被重写
修饰变量:该变量则为常量,初始化之后值就不能被修改
特点别的,final修饰变量是指引用不能改变,如果是一个引用数据类型,那么对象中的属性值是可以改变的
- final int MAX = 9;
- MAX = 20;//报错 不能更改
-
- final Person person = new Person();
- person.setAge(10);//这是可以的
- person = new Person();//这是错误的
- 使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改
- 变的。例如,对于如下语句: