JAVA基础(二)String/StringBuffer/StringBuilder/成员变量和局部变量/对象实体和对象引用

本文探讨了JAVA的面向对象编程三大特征:封装、继承和多态,并详细解释了String、StringBuffer和StringBuilder的区别。同时,讨论了静态方法内调用非静态成员的限制、对象实体与对象引用的差异,以及方法返回值的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. JAVA面向对象编程三大特征

  1. 封装:将一个对象的属性私有化。提供一些可以被外界访问的属性方法,如果属性不想被外界访问,可以不被提供方法给外界访问。
    1. 继承:使用已存在类的定义作为基础建立新类的技术,新类必须继承父类,可以增加新的功能和数据。
      (1) 子类拥有父类对象所有的属性和方法,父类中的私有属性和方法子类无法访问,只是拥有;
      (2) 子类可以拥有自己的属性和方法;
      (3) 子类可以用自己的方式实现父类的方法。
    2. 多态:程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,在程序运行期间才确定。
      两种方式:1.继承——多个子类对同一方法的重写;2.接口——实现接口并覆盖接口中同一方法。

2. String/StringBuffer/StringBuilder的区别

StringStringBufferStringBuilder
可变性不可变继承自AbstractStringBuilder类继承自AbstractStringBuilder类
线性安全性对象不可变,线性安全加了同步锁或对调用的方法加了同步锁,线程安全非线性安全
性能每次改变都会生成一个新的String对象对StringBuffer对象本身进行操作可以获得10%~15%左右的性能提升
总结操作少量数据多线程单线程

3. 自动装箱与拆箱

  1. 装箱:将基本类型用它们对应的引用类型包装起来;
  2. 拆箱:将包装类型转换为基本数据类型。

4. 在静态方法内调用一个非静态成员为什么是非法的?

由于静态方法可以不通过对象进行调用,因此在静态方法里不能调用其他非静态变量,也不可以访问非静态变量成员。

5. 在JAVA中定义一个不做事且没有参数的构造方法的作用

如果Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类的没有参数的构造方法。如果没有这个方法,则会在编译时发生错误。

6. import java和javax的区别

最开始javax是扩展的JavaAPI,随着时间的推移,现在javax已经成为标准API的一部分。
java和javax没有本质的区别。

7. 接口和抽象类的区别

接口抽象类
方法默认public可以有非抽象方法
变量只有static和final变量可以有其他变量
一个类可以实现多个接口,接口本身可以通过extends关键字扩展多个接口只能实现一个抽象类
修饰符默认publicpublic、protected、default修饰符
设计层面对行为的抽象,是一种行为的规范抽象是对类的抽象,是一种模板设计

8. 成员变量和局部变量的区别

成员变量局部变量
语法1. 属于类;2. 可以被修饰符所修饰;3. 两者均能被final修饰1. 在方法中定义的变量或者是方法的参数; 2. 不能被访问控制修饰符以及static所修饰
存储方式1. 如果使用static修饰,属于类; 2. 没有使用static,属于实例对象存在于堆内存,局部变量也存在于堆内存
生存时间随着对象创建而存在随着方法的调用自动消失
没有赋初值自动以类型的默认值赋值(final除外)不会自动赋值

19. 创建对象用什么运算符?

使用new运算符创建对象实例(对象实例在堆内存中)。

20. 对象实体和对象引用的不同?

对象引用指向对象实例,可以指向0或1个对象。
一个对象可以有n个引用指向它。

21. 什么是方法的返回值?返回值在类的方法里的作用是什么?

方法的返回值是指获取到某个方法体中的代码执行后产生的后果。
作用:接收结果,使其可以进行其他的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值