欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 一文简单回顾复习Java基础概念

一文简单回顾复习Java基础概念

2025/9/25 11:24:50 来源:https://blog.csdn.net/Kerwin_D/article/details/145359592  浏览:    关键词:一文简单回顾复习Java基础概念

还是和往常一样,我以提问的方式回顾复习,今天回顾下Java小白入门应该知道的一些基础知识

Java语言有哪些特点呢?
在这里插入图片描述

  • Java语言的特点有:
    1. 面向对象,主要是封装、继承、多态;
    2. 平台无关性,“一次编写,处处运行”,因此采用Java语言编写的程序具有很好的移植性;
    3. 支持多线程。C++没有内置的多线程机制,因此必须调用操作系统的API来完成多线程设计,而Java却提供了封装好多线程支持;
    4. 支持JIT编译,也就是即时编译器,它可以在程序运行时将字节码转换为热点机器码来提高程序的运行速度;

那么,刚刚提到了C++,Java语言和C语言有哪些区别呢?

  • Java语言是一种跨平台的编程语言,通过在不同操作系统上安装对应版本的JVM以实现“一次编译,处处运行”的目的。而C语言需要在不同的操作系统上重新编译;
  • Java实现了内存的自动管理,而C语言需要使用malloc和free来手动管理内存;

Java有哪些数据类型呢?

  • Java的数据类型可以分为两种:基本数据类型和引用数据类型;
    在这里插入图片描述
  • 基本数据类型有:
    1. 数值型:
      • 整数类型 byte、short、int、long
      • 浮点类型 float、double
    2. 字符型-- char
    3. 布尔型-- boolean
  • 他们的默认值和占用大小如下所示
数据类型默认值大小
booleanfalse1字节或4字节
char‘\u0000’2字节
byte01字节
short02字节
int04字节
long0L8字节
float0.0f4字节
double0.08字节
  • 引用数据类型有:
    1. 类 class
    2. 接口 interface
    3. 数组 [ ]

再问个有趣的问题,Integer类型应该有数据范围,那么如果给Integer最大值+1,会是什么结果呢?

  • 当给Integer.MAX_VLUE加1时,会发生溢出,变成Integer.MIN_VALUE;

  • 这是因为Java 的整数类型采用的是二进制补码表示法,溢出时值会变成最小值。

    • Integer.MAX_VALUE 的二进制表示是 01111111 11111111 11111111 11111111(32 位)。

      加 1 后结果变成 10000000 00000000 00000000 00000000,即 -2147483648(Integer.MIN_VALUE)。

Java面向对象编程有哪些特性呢?

  • 面向对象编程有三大特性:封装、继承、多态

封装是什么?

  • 封装是指将数据(属性,或者叫字段)和操作数据的方法(行为)捆绑在一起,形成一个独立的对象(类的实例)。
class Nvshen {private String name;private int age;public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}
}
  • 可以看的出,女神类对外没有提供 age 的 getter 方法,因为女神的年龄要保密。
    所以,封装是把一个对象的属性私有化,同时提供一些可以被外界访问的方法;

继承是什么呢?

  • 继承允许一个类(子类)继承现有类(父类或者基类)的属性和方法。来提高代码的复用性,建立类之间的层次关系;
    同时,子类还可以重写或者扩展从父类继承来的属性和方法,从而实现多态。
class Person {protected String name;protected int age;public void eat() {System.out.println("吃饭");}
}class Student extends Person {private String school;public void study() {System.out.println("学习");}
}
  • Student 类继承了 Person 类的属性(name、age)和方法(eat),同时还有自己的属性(school)和方法(study)。

什么是多态呢?

  • 多态允许不同类的对象对同一对象做出响应,但表现出不同的行为(即方法的多样性);
  • 多态其实是一种能力——同一个行为具有不同的表现形式;换句话说就是,执行一段代码,Java 在运行时能根据对象类型的不同产生不同的结果。
  • 多态的前置条件有三个:
    1. 子类继承父类
    2. 子类重写父类的方法
    3. 父类引用指向子类对象
//子类继承父类
class Wangxiaoer extends Wanger {public void write() { // 子类重写父类方法System.out.println("记住仇恨,表明我们要奋发图强的心智");}public static void main(String[] args) {// 父类引用指向子类对象Wanger wanger = new Wangxiaoer();wanger.write();}
}class Wanger {public void write() {System.out.println("沉默王二是沙雕");}
}

那么多态解决了什么问题呢?

  • 多态指同一个接口或方法在不同的类中有不同的实现,比如说动态绑定,父类引用指向子类对象,方法的具体调用会延迟到运行时决定。

举例,现在有一个父类 Wanger,一个子类 Wangxiaoer,都有一个 write 方法。现在有一个父类 Wanger 类型的变量 wanger,它在执行 wanger.write() 时,究竟调用父类 Wanger 的 write() 方法,还是子类 Wangxiaoer 的 write() 方法呢?

//子类继承父类
class Wangxiaoer extends Wanger {public void write() { // 子类覆盖父类方法System.out.println("记住仇恨,表明我们要奋发图强的心智");}public static void main(String[] args) {// 父类引用指向子类对象Wanger[] wangers = { new Wanger(), new Wangxiaoer() };for (Wanger wanger : wangers) {// 对象是王二的时候输出:勿忘国耻// 对象是王小二的时候输出:记住仇恨,表明我们要奋发图强的心智wanger.write();}}
}class Wanger {public void write() {System.out.println("勿忘国耻");}
}

答案是在运行时根据对象的类型进行后期绑定,编译器在编译阶段并不知道对象的类型,但是 Java 的方法调用机制能找到正确的方法体,然后执行,得到正确的结果,这就是多态的作用。

多态的实现原理是什么呢?

  • 多态是通过动态绑定实现的,Java使用虚方法表存储方法指针,方法调用时根据对象实际类型从虚方法表查找具体实现;

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词