牛客网JAVA基础总结

这篇博客总结了Java的基础知识,包括代码的跨平台运行、文件中类的限制、访问权限、数据类型、封装目的、单继承原因、重载与重写区别、构造方法特性、对象的生命周期、包装类的作用、面向对象的特性、异常处理、静态关键字作用、泛型概念、反射机制和四种引用方式。此外,还详细探讨了String、StringBuffer和StringBuilder的差异、接口与抽象类的区别,以及Java与C++的对比。
摘要由CSDN通过智能技术生成

1.Java代码一次编写、到处运行

因为Java虚拟机可以实现跨平台的代码运行,不同的操作系统中有不同的JVM。

在程序运行前,JVM会将编写的Java代码编译为字节码格式,这种格式是JVM能够识别的格式。

运行程序时,Java类加载器先加载字节码文件,Java解释器会将字节码翻译为操作系统可以识别的机器码,方便操作系统去执行。为了提高Java程序运行速度,引入了JIT(即时编译器),在第一次编译后,将字节码对应的机器码保存,下次可以直接使用。

2.Java文件里可以有多个类吗(不包含内部类)?

一个Java文件中可以有多个类,但是最多只能有一个被public修饰的类

如果该文件中包含public修饰的类,则类的名称和Java文件的名称必须相同。

3.Java访问权限

Java语言中共有三种访问修饰符:public、private、protected;

在使用这些修饰符修饰目标时,一共可以形成四种访问权限,public、private、protected、default(不加任何修饰符)。

修饰成员变量/方法时:

  • private:该成员可以被该类内部成员访问;
  • default:该成员可以被该类内部成员访问,也可以被同一包下的其他类访问;
  • protected:该成员可以被该类内部成员访问,也可以被同一包下的其他类访问,还可以被它的子类访问;
  • public:该成员可以被任意类访问。

修饰类时:

  • default:该类可以被同一包下的其他类访问;
  • public: 该类可以被任意包下,任意类访问。

4.Java数据类型 

Java数据类型包括两大类:基本数据类型,引用数据类型。

基本数据类型有8个,可以分为4类:整数类型(byte/short/int/long)、浮点类型(float/double)、字符类型(char)、布尔类型(boolean)。除了布尔类型,其他都可以看作为数组类型,可以进行类型转换。

引用类型就是对一个对象的引用,根据引用对象的不同,可以分为数组、类、接口引用类型。实质上就是通过指针,指向堆中对象所持有的内存空间。

基本数据类型所占的内存空间:

  • byte:1字节(8位),数据范围是 -2^7 ~ 2^7-1;
  • short:2字节(16位),数据范围是 -2^15 ~ 2^15-1;
  • int:4字节(32位),数据范围是 -2^31 ~ 2^31-1;
  • long:8字节(64位),数据范围是 -2^63 ~ 2^63-1;
  • float:4字节(32位),数据范围是 -3.4*10^38 ~ 3.4*10^38;
  • double:8字节(64位),数据范围是 -1.8*10^308 ~ 1.8*10^308;
  • char:2字节(16位),数据范围是 \u0000 ~ \uffff;
  • boolean:不同的JVM有不同的实现机制,没有固定的参数。

6.全局变量(成员变量)和局部变量 

Java中没有全局变量,这是c语言中的概念,Java中对应的名称叫做成员变量。

成员变量:

  1. 成员变量是在类的范围内定义的变量;
  2. 成员变量有默认初始值;
  3. 未被static修饰的成员变量也叫实例变量,存储于对象所在的堆内存当中,生命周期与对象相同;
  4. 被static修饰的成员变量也叫类变量,存储于方法区当中,生命周期与当前类相同。

局部变量:

  1. 局部变量是在方法内定义的变量;
  2. 局部变量没有默认初始值;
  3. 局部变量存储于栈内存中,作用的范围结束,变量空间会自动的释放。 

7.为什么要有包装类? 

Java是面向对象的语言,设计理念就是“一切皆是对象”。但是8种基本数据类型却不属于对象,为了解决这个问题,Java为每个基本数据类型都定义了一个对应的引用类型,叫做包装类。

自动装箱与自动拆箱是JDK1.5提供的功能。

自动装箱:可以把一个基本类型的数据直接赋值给对应的包装类型;

自动拆箱:可以把一个包装类型的数据直接赋值给对应额基本类型;

应用场景:例如某个方法的参数是包装类型,调用时我们所使用的数据却是基本类型的数据,这时可以不做任何处理,直接将这个基本类型的值传入给方法即可。

8.对面向对象的理解

面向对象是一种程序设计方法,基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。从现实世界中客观存在的事物出发来构造软件系统,在系统构造中尽可能运用人类的自然思维方法,根据事物的本质特点,把它们抽象地表示为系统中的类,作为系统的基本构成单元,这使得软件系统的组件可以直接映像到客观世界。

面向对象的三大特征是:封装、继承、多态。

  • 封装:利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据保护在抽象数据类型的内部,只保留一些对外交流的接口。对Java而言,一个对象封装的是自己的属性和方法,有以下好处:①良好的封装可以减少耦合;②类内部的结构可以自由修改;③可以对成员进行更加精确的控制;④隐藏一些重要信息,保护信息安全。

  • 继承:使用已经存在的类作为基础建立新的类,新类的定义可以增加新的数据或新的功能,也可以使用父类的功能,但是不能选择性的继承父类。并且子类拥有父类非private的属性和方法,子类也可以拥有自己独有的属性和方法,子类可以用自己的方法实现父类。

  • 多态:子类对象可以直接赋值给父类变量,但运行时任然表现出子类的行为特征,意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。Java实现多态的三个必要条件:继承、重写、向上转型。设计程序时,可以将参数的类型定义为父类型,调用程序时,根据实际情况,传入该父类型的某个子类型的实例,从而实现多态。

9.封装的目的是什么,为什么要有封装?

封装是面向对象语言对客观世界的模拟,对一个类或对象实现良好的封装,可以实现以下目的:

  • 可以隐藏类的实现细节;
  • 使用者只能通过接口来访问数据,限制了对成员变量不合理的访问;
  • 进行数据检查,有利于保证对象信息的完整性;
  • 提高代码的可维护性。

实现良好的封装,要将对象的成员变量和实现细节隐藏起来࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值