欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaSE基础 | 面试必备干货

程序员文章站 2024-03-23 12:23:22
...

1.Java特性

Java做为一门“全面”面向对象的编程语言,提供了面向对象的四种基本性质:抽象性、封装性、继承性和多态性。 面向对象主要有四大特性:封装、抽象、继承和多态

Java支持8种数据类型:

byte—————>Byte
short—————>Short
int——————>Integer
long——————>Long
float——————>Float
double——————>Double
boolean——————>Boolean
char——————>Character

2.Java如何支持正则表达式

Java中的String类提供了支持正则表达式操作的方法,包括:matches()、replaceAll()、replaceFirst()、split()。此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegExpTest {
    public static void main(String[] args) {
        String str = "成都市(成华区)(武侯区)(高新区)";
        Pattern p = Pattern.compile(".*?(?=\\()");
        Matcher m = p.matcher(str);
        if(m.find()) {
            System.out.println(m.group());
        }
    }
}

返回结果是:成都市

JavaSE基础 | 面试必备干货

JavaSE基础 | 面试必备干货

JavaSE基础 | 面试必备干货

3.正则表达式及其用途

在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。计算机处理的信息更多的时候不是数值而是字符串,正则表达式就是在进行字符串匹配和处理的时候最为强大的工具,绝大多数语言都提供了对正则表达式的支持。

4.Java和JavaScript

JavaScript 与Java是两个公司开发的不同的两个产品。Java 是原Sun Microsystems公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言.

一、基于对象和面向对象

Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和事件驱动(Event-Driven)的编程语言,因而它本身提供了非常丰富的内部对象供设计人员使用。

二、解释和编译

Java的源代码在执行之前,必须经过编译。JavaScript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。目前浏览器几乎都是用了JIT,即时编译。

三、强类型变量和类型弱变量

Java采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript中变量是弱类型的,甚至在使用变量前可以不作声明,JavaScript的解释器在运行时检查推断其数据类型

四、代码格式不同

5.Java如何跳出循环

考察循环

在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。Java中支持带标签的break和continue语句。应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用。使用需谨慎

6.&和&&的区别

考察运算符

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

&&运算符是短路与运算

&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。

例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。

7.int和Integer有什么区别

考察数据类型

Int是java的原始数据类型,Integer是java为int提供的封装类。

Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:
- 原始类型: boolean,char,byte,short,int,long,float,double
- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double


8.Array和ArrayList的区别

Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
Array大小是固定的,ArrayList的大小是动态变化的。
ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

9.值传递和引用传递

考察:Java引用传递

值传递:传递的是该变量的一个副本,改变副本不影响原变量。

引用传递:对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身。对引用对象进行操作会同时改变原对象

一般认为,java内的传递都是值传递.

10.Lamda表达式是什么?优缺点。

Lambda表达式是Java SE 8中一个重要的新特性,lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体。

Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包。 流(stream)就如同迭代器(iterator),但附加了许多额外的功能。 总的来说,lambda表达式和 stream 是自Java语言添加泛型(Generics)和注解(annotation)以来最大的变化

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements;

import java.util.Arrays;
import java.util.List;
public class RegExpTest {
    public static void main(String[] args) {
        String[] atp = {"Rafael Nadal", "Novak Djokovic",
                "Stanislas Wawrinka",
                "David Ferrer","Roger Federer",
                "Andy Murray","Tomas Berdych",
                "Juan Martin Del Potro"};
        List<String> players= Arrays.asList(atp);

        for (String player : players) {
            System.out.print(player + "; ");
        }
        players.forEach((player) -> System.out.print(player + "; "));
    }
}

优点:1. 简洁。2. 非常容易并行计算。3. 可能代表未来的编程趋势。

缺点:1. 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。(并行计算有时需要预热才显示出效率优势)2. 不容易调试。3. 若其他程序员没有学过 lambda 表达式,代码不容易让其他语言的程序员看懂。

11.Map的分类

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

java.util.Map;有四个实现类

HashMap Hashtable LinkedHashMap和TreeMap

HashMap是一个最常用的Map,根据键值可以直接获取它的值只允许一条记录的键为Null;允许多条记录的值为Null;不支持线程的同步。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

相关标签: Java SE Java