欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

int与integer的区别-Java四大特性-修饰符访问的范围-Java与c++区别-JDK和JRE-StringBuilder和buffer

程序员文章站 2022-04-10 08:33:49
1-1 int与integer的区别-Java与c++区别-这里是easy的java基础面试下面是总的阅览:java基础java集合JVM多线程mysql_数据库计算机网络nosql_redis设计模式操作系统消息中间件activeMqSSM框架面试题服务中间件Dubbo......

这里是easy的java基础面试
下面是总的阅览:

java基础
java集合
JVM
多线程
mysql_数据库
计算机网络
nosql_redis
设计模式
操作系统
消息中间件activeMq
SSM框架面试题
服务中间件Dubbo

1-int与integer的区别

5 点:
  1. Integer 是int的包装类,而int则是java的一种基本数据类型。
  2. Integer 变量必须实例化之后才能使用,而int变量不需要。
  3. Integer 实际上是对象的引用,当new一个Integer时,实际上是生成了一个指针指向对象,而int是直接存储数据值。
  4. Integer的默认值为null,int则是0 。
  5. 存储: Integer一般存储在常量池和堆内存。而int存储在方法参数,局部变量----->栈内存中的栈帧的局部变量表里,常量----> 常量池中。
实例:1   Integer and Integer
Integer t1 = new Integer(100);
Integer t2 = new Integer(100);
t1 == t2   // false 因为比较内存地址 (包装类型和string都重写了方法。)
t1.equals(t2)  // true 因为比较的是 值
实例: 2   Integer and Int
Integer i = new Integer(100);
int j = 100;
i == j  // true 包装类Integer 与基本数据类型 int比较时,java会自动拆箱 
实例: 3   Integer and Integer 
Integer i = new Integer(100);
Integer j = 100;
i == j  // false 内存地址的比较, i在堆内存中,而j保存的是 常量池的地址。

注意: 补充

1-1 java语言八种数据类型

类别 byte short char int long float double
字节数 1 2 2 4 8 4 8
范围 -128~127 -2^15 ~ 2^15 - 1 0 ~ 2^16 - 1 -2^31 ~ 2^31 - 1 -2^63 ~ 2^63 - 1

2-Java四大特性

  1. 抽象: 是将一类对象共同特征总结出来构造类的过程。
  2. 封装: 通常认为封装就是把数据和数据的方法绑定起来,对数据的访问只能通过指定的接口。
  3. 继承: 从已有类得到继承信息创建新类的过程。
  4. 多态: 指允许不同子类型对象对同一消息做出不同的响应。
  1. 多态的实现分为两种: 方法重载 和 方法重写。

    重写: 方法名,参数,返回值不变。

  1. 不能存在同一个类中
  2. 子类检查异常类型要小于父类
  3. 子类方法访问修饰符大于父类
重载:方法名不变,返回值 参数(类型,个数)变
  1. 同一个类中 或者有继承关系的类中。

2-1-继承的好处和坏处

好处:

  1. 子类能自动继承父类接口
  2. 创建子类的对象时,无需创建父类的对象。

坏处:

  1. 破坏封装性,子类与父类之间紧密耦合,子类依赖于父类的实现,子类缺乏独立性。
  2. 支持扩展,但是往往是以增加系统结构的复杂度为代价。
  3. 不支持动态扩展。在运行时,子类无法选择不同的父类。
  4. 子类不能改变父类的接口。

2-2-Orivide覆盖private / static方法?

不行,static方法不能覆盖, 因为方法覆盖是基于运行时动态绑定的,而static 方法是编译时静态绑定的,并且static方法与类的任何实例无关。
private 不能是因为private 修饰的变量 或者方法只能在当前类使用,子类不能访问。

3-修饰符访问的范围

范围 所在类 同一包内其他类 其他包子类 其他包内非子类
private 不可 不可 不可
default 不可 不可
protected 不可
public

4-Java与c++区别

  1. 都是面对对象的语言,都支持封装,继承,多态
  2. Java不提供指针来直接访问内存,而是通过引用,程序内存更加安全。
  3. Java的类都是单继承的,c++支持多继承,但是Java的接口支持多继承。
  4. Java有自动内存管理机制,不需要程序员手动释放无用内存。因为有JVM。

5-JDK和JRE

JDK: 是Java development kit, 他是功能齐全的Java SDK, 它拥有JRE的一切,还有编译器javac 和工具javadoc jdb。它能创建和编译程序。
JRE: 是java运行时环境,他是运行已编译java程序所需的所有内容的集合。包括JVM, Java类库,Java命令和其他一些基础组件,但是他不能创建程序。
JRE内部是通过 JIT编译器完成第一次编译后,会把class文件变为 机器码,把字节码所在机器码保存下来,下次直接使用。
字节码和不同os 中的JVM实现是Java语言 “一次编译,随时可以运行” 的关键。

6-Java创建对象的四种方式

使用构造器(2种) : 使用new 关键字,newInstance() + 无构造器(clone 反序列化)

7-String_StringBuffer_StringBuilder

7-1-区别:

都是final修饰的类,不允许被继承
String长度是不可变的, stringbuffer 和 builder可变 append重新分配空间
Stringbuffer 线程安全,StringBuilder 不安全,但是性能高。

7-2-为什么string不可变?

final修饰的类
如果可变其hashcode不一致,但都是在常量池中

7-3-String重写hashcode和equals?

  1. 重写equals,必重写hashcode。
  2. 如果重写equals,不重写hashcode:: 在hashset中先存入 值为1的对象x1, 存在一个x2 值和x1一样,此时如果重写equals,不重写hashcode,此时x2 放入hashset中时,遍历链表,发现hashcode不一样,此时x2存入hashset,发生set集合出现两个一样的数据。

下一篇:
1-2 map和list和set-ThreadLocal-finally-finalize

本文地址:https://blog.csdn.net/qq_41773026/article/details/109561432