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

上一篇:
1-0 Java面试指南前传

这里是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语言八种数据类型

类别byteshortcharintlongfloatdouble
字节数1224848
范围-128~127-2^15 ~ 2^15 - 10 ~ 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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下次遇见说你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值