Java面试DAY1

1.Java语言有哪些特点?

a.简单易学、有丰富的类库

       Java面向对象编程,入门较简单,效率高,易理解。Java提供了很多的工具类方便开发者使用。

b.面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)

       Java面向对象后,自己的事情自己内部处理,内聚性提高了,依赖外部类降低了。

c.与平台无关性(JVM是Java跨平台使用的根本)

       JVM是Java Virtual Machine(Java虚拟机)的缩写。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够"一次编译,到处运行"的原因。

d.可靠安全

       Java为什么是安全的?我通过自我学习和阅读资料总结了以下几点:
       1.沙箱刷新程序,Java程序的执行被要求在一个封闭的沙箱之中,在这个环境中,Java程序可以进行一切操作,但是在沙箱外则不能进行任何操作。例如,未经确认的JavaApplet的沙箱禁止许多操作,不可进行本地读写,不能与除本地计算机建立连接。保护了用户免除破坏具有危险性的程序侵害。
       2.在编写好java文件后,类加载器会对Java文件进行检验,判断是否存在对系统进行有害操作的代码,如果有java文件将无法通过编译。
       3.不支持指针操作,对内存的访问必须是实例变量的操作,排除了指针出错问题,也解决了指针内存泄漏的安全问题。
       4.类型强转检测
       5.数组边界检测
       6.垃圾回收机制
       7.... ...

e.支持多线程

       Java可以并发处理作业,多个线程分配各自的cpu资源,提高性能,可实现线程安全。

2、面向对象和面向过程的区别

  • 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发
    面向过程(c语言)
  • 面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。(Java)

可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
————————————————
版权声明:本文为CSDN博主「光哥_帅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jerry11112/article/details/79027834

3 、八种基本数据类型的大小,以及他们的封装类

基本类型 大小(字节) 默认值 封装类
byte 1 (byte)0 Byte
short 2 (short)0 Short
int 4 0 Integer
long 8 0L Long
float 4 0.0f Float
double 8 0.0d Double
boolean - false Boolean
char 2 \u0000(null) Character
  1. int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值是null,所以Integer能区分出0和null的情况。一旦java看到null,就知道这个引用还没有指向某个对象,
    再任何引用使用前,必须为其指定一个对象,否则会报错。
  2. 基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间之后才可以赋值。数组对象也是一个引用对象,将一个数组赋值给另一个数组时只是复制了一个引用,所以通过某一个数组所做的修改在另一个数组中也看的见。
  3. 虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点。

java基本类型和封装类型区别及应用
https://blog.csdn.net/bin470398393/article/details/85697445

4、标识符的命名规则

标识符的含义:

  • 是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。

命名规则:(硬性要求)

  • 标识符可以包含英文字母,0-9的数字,$以及_
  • 标识符不能以数字开头
  • 标识符不是关键字

命名规范:(非硬性要求)

  • 类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。

变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。

方法名规范:同变量名。

5、instanceof 关键字的作用

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:

boolean result = obj instanceof class

其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

int i = 0;
system.out.println(i instanceof Integer);//编译不通过﹐i必须是引用类型,不能是基本类型
system.out.println(i instanceof object);//编译不通过

Java中instanceof关键字的理解
https://www.cnblogs.com/zjxynq/p/5882756.html

posted @ 2021-03-07 20:57  锖兔真菰  阅读(61)  评论(0编辑  收藏  举报