Java教程

Java学习阶段总结1

本文主要是介绍Java学习阶段总结1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

       最近又开始重新学习Java,两年没碰了,才发现代码这东西不经常熟练是比较容易生疏,知识点倒不容易忘,只是上手敲代码的时候会反应迟钝。。。

这两周是从0开始学Java,第一周是初识Java,是一些基本的准备工作,基本数据类型,变量,控制流程,数组等。第二周开始是学大名鼎鼎的面向对象编程,也就是Java OOP,哦这不是那个男女对象,是new出来的:)。知识点有类,对象,方法,重写重载,抽象类,多态。其实这些东西之前都搞过一遍了,但2年了也忘得差不多了。今天是我的第一篇博客,本来这个系列打算写(复制粘贴)一些知识点什么的,算是笔记之类的东西,但是感觉这种东西用处也不大。。知识点到处都有,实操才是比较有用的。额那以后这个系列博客就以扯点没用的+面试八股文的形式展现吧,反正也是留着自己看的。


以下面试题来自CSDN博主「Java程序员-张凯」的原创文章
原文链接:https://blog.csdn.net/qq_41701956/article/details/110119625

其中第9题为CSDN博主「刘思雨579」的原创文章
原文链接:https://blog.csdn.net/weixin_45608849/article/details/106753579

1 JVM、JRE和JDK的关系

JVM
Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

JRE
Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK
Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

2 什么是跨平台性?原理是什么

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。

3 Java语言有哪些特点

简单易学(Java语言的语法与C语言和C++语言很接近)

面向对象(封装,继承,多态)

平台无关性(Java虚拟机实现平台无关性)

支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

安全性

4 Java有哪些数据类型

  • 基本数据类型
    • 数值型
      • 整数类型(byte,short,int,long)
      • 浮点类型(float,double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型
    • 类(class)
    • 接口(interface)
    • 数组([]) 

 5 switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。

从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型

从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

6 访问修饰符 public,private,protected,以及不写(默认)时的区别

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
public : 对所有类可见。使用对象:类、接口、变量、方法

7 &和&&的区别

&运算符有两种用法:(1)按位与;(2)逻辑与。

&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

8 final finally finalize区别

final 可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
finally 一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize 是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。

9 谈谈你对封装、继承、多态的理解

封装
封装是当前属性被 private 所修饰,在类外不能够访问,只能在类内访问,意义是能够降低代码的管理复杂度,类的调用者不需要知道是怎么实现的,只需要调用get和set方法就可以,就好像我们看不到空调内部的零件信息,但是却能使用遥控器控制空调
Java提供了3个访问控制符:private、protected、public 还有一个是包访问权限(default)

private(当前类访问权限):类内部可以访问,类外部不能访问
default(当前包访问权限):类内部可以访问,同一个包中的类可以访问,其他类不能访问
protected(子类访问权限):可以被同一包中其他类访问,也能被不同包中的子类访问,其他类不能访问
public(公共访问权限):都能访问

继承
继承是使用已存在的类的定义作为基础建立新的类,新类的定义可以增加新的数据和新的功能,但是不能选择性的继承父类,就比如描述狗和猫,两者都有名字和年龄,但是叫声不同,那就可以写一个动物类,让猫类和狗类继承动物类,继承是一个is-a的关系
好处是提高代码的复用性,程序的可维护性,提高开发效率
子类继承父类除构造方法以外的所有属性和方法
子类要帮助父类进行构造

多态
多态发生的前提主要有3个:
1.父类引用引用子类对象
2.父类和子类有同名的覆盖方法
3.通过父类引用调用这个重写方法的时候,就会发生多态
将一个父类的引用指向子类的对象,称为向上转型,自动进行类型转换
此时通过父类引用调用的方法是子类覆盖或继承父类的方法,此时就发生了运行时绑定
如果父类要调用子类特有的方法,就要将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换
如果需要向下转型就要使用instanceof来判断一个引用是否是某个类的实例,如果是,返回true,这样向下转型才安全
好处是:隐藏了子类类型,提高了代码的可扩展性
坏处是:只能使用父类的功能,无法使用子类的特有功能,功能有限制

10 多态的实现

Java实现多态有三个必要条件:继承、重写、向上转型。

继承:在多态中必须存在有继承关系的子类和父类。

重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

这篇关于Java学习阶段总结1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!