JAVA理论知识大全

1.什么是方法重载?
    方法名一样。
    参数列表不一样(参数个数不同或者参数类型不同)

2.什么是类?
    类是具有相同属性和方法的一组对象的集合。

3.什么是对象?
    用来描述客观事物的一个实体,由一组属性和方法构成。

4.方法和属性是什么?
    属性的概念:对象具有的各种特征。
    方法的概念:对象执行的操作。
    方法的定义:在JAVA中,用方法来描述现实事物的行为

5.Eclipse常用快捷键有哪些?
    导包快捷键:Shift+Ctrl+O。
    多行注释快捷键:Alt+/。
    代码格式化快捷键:Shift+Ctrl+F。
    保存快捷键:Ctrl+S
    删除一整行代码:Ctrl+D
    快速复制:Ctrl+Alt+下箭头

6.for循环那两种
 For
 Foreach

7. Java基本数据类型有哪些?
   1:逻辑型  boolean;
   2:字节型   byte;
   3:文本型  char;
   4:数据型  { 整数型: short;int;long;
                      浮点型 :float;double;}

8.&和&&有什么区别?
    &和&&的区别是,&会执行两边,不管第一个是否成立
    &&只会执行一边,如果第一个条件为假,则不会走第二个条件

9.四种访问控制符
    private  default  protected   public
     什么是封装:把具体的逻辑隐藏起来

10.什么是继承?
 继承是从已有的类中派生出新类,新的类能吸收已有类的数据属性和方法,并能扩展新的能力。
 继承是面向对象的三大特征之一。(三大特征:封装,继承,多态。)
11.继承的语法格式:
 修饰符 class 子类 extends 父类{   }。例如:public class EnglishBook extends Book{   }.

12.继承的好处有哪些?
 1. 继承提高了软件的复用性。  
 2. 继承简化了人们对事物的认识和描述,能清晰体现类间的层次结构关系。  
 3. 继承降低了程序的耦合性,增加了程序的易维护性。

13.继承的特点:
 继承是单继承,即一个子类只有一个父类。
        继承关系具有传递性。
 
 子类可以直接访问父类中的非私有的属性和行为。
14.什么是方法重载:
 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
 
15.方法的重写:

 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 
 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
 
 方法重写的规则:
 1. 方法名相同。
 2. 形参列表相同。
 3. 子类的方法的返回值 类型应该比父类的返回值类型更小或相等。
 4. 子类方法抛出的异常类应该比父类抛出的异常类更小或相等。
 5. 子类方法的访问权限应该比父类方法的访问权限更大或相等。

16.什么是多态?
 多态是指两个或多个属于不同类的对象,对于同一个方法调用作出不同响应的方式。
 如何实现多态?
 1.     父类  对象名  =  new  子类  ();
 2.     调用重写方法,即可产生多态。

17.编译时和运行时:
 1.      编译时:在编写代码期间,没有run  as时,都属于编译时。
 2.      运行时:在run  as时,系统处于运行状态时,都属于运行时。
18.多态的优势:
 1.     多态对已存代码具有可替换性。
 2.     多态对已存代码具有可扩充性。
 3.     多态具有灵活性,提高了使用效率。
 4.     多态简化对应用软件的代码编写和修改的过程。

19.什么是接口?
 接口是一种特殊的抽象类,接口里有很多抽象方法。接口关键字:interface.
 结构: public interface  接口名{ 抽象方法 }

20.为什么要使用接口?
        接口可以精简程序结构,免除重复定义,提出设计规范。
 JAVA只支持单继承,可以实现多个接口。

21.什么是抽象方法:
 抽象方法的关键字是:abstract
 抽象方法中没有方法体
22.什么是抽象类:

 抽象类——有抽象方法的类
 抽象 的关键字是:abstract
特点:1.抽象类不可以实例化
          2.继承一个抽象类,必须要实现抽象类中的抽象方法。
 除非子类也是抽象类。

23.为什么要使用抽象类:
 抽象方法——是一个模板或约束,避免了子类的随意性,需要实现它的类必须重写它的抽象方法。

24.什么是I0流
      流(Stream):源于UNIX中管道(pipe)的概念。  在UNIX中,管道是一条不间断的字节流,
      用来实现程序或进程间的通信,或读写外围设备、外部文件等。

25.   I:输入流指的是将数据以字符或字节形式从外部媒介读取到内存中。
      O :输出流指的是将内存中的数据写入外部媒介。

26.    IO流的分类:字节流和字符流。
       字节流包含:InputStream和OutputStream
       字符流包括:Reader和Writer

27.字节流的概念:
 字节流是由字节组成的,字节流是最基本的,所有的InputStream和OutputStream的子类都是字节流,
        主要用在处理二进制数据,它是按字节来处理的。

28.字符流的概念:(附代码)
 字符流是由字符组成的,Java里字符由两个字节组成,所有的Reader和Writer的子类都是字符流,主要用在处理文本内容或特定字符

29.字节流和字符流的区别:
     1.    一个是按字节读写,一个是按字符。
 2.    需要对内容按行处理,一般会选择字符流。
 3.    只是读写文件和文件内容无关(下载,复制等),一般选择字节流。

3.Android Studio 常用快捷键
 1.格式化代码:Ctrl+Alt+L
 2.自动导入包路径:Ctrl+Alt+O
 3.重命名文件、类名、变量名:Shift+F6
 4.撤销操作:Ctrl+Z
 5.反撤销操作:Ctrl+Shift+Z
 6.全局搜索文件:双击Shift
 7.查找:Ctrl+F
 8.双击类名、变量、方法选中,查看调用的地方:Alt+F7
 9.强制提示代码:Ctrl+Alt+空格
 10.按关键字全局搜索:Ctrl+Shift+F
 11.代码自动修正,鼠标点中出错的代码:Alt+Enter
 12.在类中查看继承:Ctrl+O
 13. Shift + Enter任意位置换行(往下添加空行)
 14. Alt + /代码提示  
   15.Ctrl + Y 删除当前行
 16. Ctrl + D粘贴当前行到下一行?
 17. Shift + Alt + Up/Down当前行、选中行向上/向下移动 
   18. Ctrl+Q:把光标移至方法处,按此组合键可快速查看方法的说明文档
 19.Alt + Left/Right 切换代码视图
 20. Ctrl + Enter在当前行的上一行插入新行,光标在行首时有效


1、何为编程
编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。

为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

2、什么是Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

3、jdk1.5之后的三大版本
Java SE(J2SE,Java 2 Platform Standard Edition,标准版)
Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。

Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)
Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。2018年2月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE

Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

4、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)等

JVM&JRE&JDK关系图:

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

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

6、Java语言有哪些特点
简单易学(Java语言的语法与C语言和C++语言很接近)

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

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

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

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

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

安全性

7、什么是字节码?采用字节码的最大好处是什么
字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:

Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

先看下java中的编译器和解释器:

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。

Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

8、什么是Java程序的主类?应用程序和小程序的主类有何不同?
一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。而在Java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是public类,但小程序的主类要求必须是public类。主类是Java程序执行的入口点。

9、Java应用程序与小程序之间有那些差别?
简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟flash的小游戏类似。

10、Java和C++的区别
我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来!

都是面向对象的语言,都支持封装、继承和多态
Java不提供指针来直接访问内存,程序内存更加安全
Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。
Java有自动内存管理机制,不需要程序员手动释放无用内存
11、Oracle JDK 和 OpenJDK 的对比
Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;
OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的;
Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到Oracle JDK就可以解决问题;
在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;
Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;
Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。
二、基础语法
1、数据类型
1. Java有哪些数据类型
定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。

分类

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

2. switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

3. 用最有效率的方法计算 2 乘以 8
2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。

4. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。

5. float f=3.4;是否正确
不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 float f =3.4F;。

6. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗
对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。

而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。

2、编码
Java语言采用何种编码方案?有何特点?
Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。

3、注释
1. 什么Java注释
定义:用于解释说明程序的文字

分类

单行注释
格式: // 注释文字
多行注释
格式: /* 注释文字 */
文档注释
格式:/** 注释文字 */
作用

在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。

注意事项:多行和文档注释都不能嵌套使用。

4、访问修饰符
1. 访问修饰符 public,private,protected,以及不写(默认)时的区别
定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

分类

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

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值