Java SE面试题

Java SE基础

基本语法

数据类型

  1. Java的八种基本数据类型包括

    • 字符型char
    • 布尔型boolean
    • 数值类型

      1. byte

      2. short

      3. int

      4. long

      5. float

      6. double

另外Java中还存在另一种数据类型void,不过我们无法对他进行直接的操作

  1. 大小和表示范围

1Byte = 8bit

名称 字节数 最大存储量 表示范围
byte 8 255 -128到127
short 16 65536 -32768到32767
int 32 2^32-1 2^31到2^31-1
long 64 2^64-1 2^63到2^63-1
float 32 3.4e-45到1.4e38
double 64 4.9e-324到1.8e308
boolean 资料 true\false
char 16 存储Unicode码,用单引号赋值

关键字

Java关键字

  1. 访问控制
权限 private default protected public
当前包当前类
当前包其他类 --
其他包其他类有继承关系 -- --
其他包其他类没有继承关系 -- -- --

关于protected

  1. 子类可以继承,但是不能访问父类的成员变量/方法(一般来说,可以访问就可以继承)。
  2. 有继承关系说明访问对象所在的类是父类。

面向对象

面向对象有以下特征

  1. 封装
  2. 继承
  3. 多态

集合

集合类概述

Collection接口

Collection接口是层次结构中的根接口,通常不能直接使用,该接口提供了添加,删除,管理元素的方法,由于List与Set都继承自该接口,所以他们也可以使用这些方法。

方法 功能描述
add(A a) 将指定对象添加到该集合中
remove(A a) 将指定对象从该集合删除
isEmpty() 返回boolean类型的返回值,判断该集合是否为空
iterator 返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size() 返回int类型的值,获取该集合中元素的个数

List

List接口扩展自Collection,他定义了一个允许重复的有序集合,从List接口中的方法来看,List主要是增加了面向位置的操作,允许在指定位置上操作元素,同时增加了一个能双向迭代线性表的新列表迭代器。

  1. ArrayList:
  • 通过查看源码知道,它是用数组存储元素的,这个数组可以动态的创建,如果元素个数超出数组容量,它就会创建一个更大的数组,并将原来的数据赋值到新数组中,
  • 线程同步不安全:ArrayList不提供线程保护,当多个线程读取数据时可能会先后修改数据造成获得的数据是脏数据。
  1. LinkedList:
  • 底层为双向链表
  • 线程不安全
List<Integer> list = new LinkedList<>();// 在创建一个LinkedList对象时一般将其向上转型为List,
// 在定义时,建议加上泛型
list.add(9);
list.add(5);
list.add(2);
list.set(2, 7);// List 独有方法 ,将下标为2的元素修改为7.
System.out.println(list.get(1));
  1. Vector:
  • 底层为数组
  • 效率低,不常用

总结

  • 如果是增加删除比较多的一般使用LinkedList,如果是随机访问次数比较多的使用ArrayList,对线程安全要求比较高的使用Vector
  • 加载方式:ArrayList使用的是懒加载,在第一次插入数据的时候才会创建数组,Vector在使用的时候会直接创建一个数组。
  • 如果List需要存储引用类型,并且使用到 .remove() , contains() 等方法,建议复写该引用类型的.equals() 方法。

Set

set不允许元素重复,本质为没有value的Map

  1. HashSet

    底层为数组,Hash表,实际上就是HashMap,允许为null,乱序存储,不允许重复。

  2. TreeSet

    底层为红黑二叉树,实际上就是TreeMap,

    不允许为null,不能重复,有序存储。

Map

存储键值对,可以通过key找到value,key不可重复,value可以重复。

常用方法
put(k,v)
get(k)
KeySet()
Values()
entrySet()
  1. HashMap
  2. TreeMap
  3. HashTable
  4. ConcurrentHashMap

Java SE基础知识的更多相关文章

  1. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  2. Java SE 基础知识(String,Array)

    String 类: 1. 对于String对象的相等性判断来说,请使用equals()方法,而不是==.String的equals()是判断当前字符串与传进来的字符串的内容是否一致. 2. Strin ...

  3. Java SE 基础知识(二)

    1. 类由两大部分构成:属性和方法.属性一般用名词来表示,方法一般用动词来表示. 2. 如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,可以都不是public的. ...

  4. Java SE 基础知识

    常量: 常量是一种标识符,它的值在运行期间恒定不变,并且常量在程序中只能被引用,而不能被重新赋值. 常量的命名规则: 1.在 Java 中,在变量声明中加入 final 关键字代表常量,加入 stat ...

  5. 什么才是java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  6. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

  7. Java SE 基础:标识(zhì)符

    Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...

  8. Java SE 基础:常用关键字

    Java SE 基础:常用关键字 常用关键字表

  9. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

随机推荐

  1. 问题: No module named _gexf 解决方法

    最近在参与一个社交网络数据可视化的项目,要在后端将社交网络信息组建成网络传至前端以使其可视化.前端使用Echart显示网络,后端要通过Python的Gexf库组建网络. Gexf库安装过程为: pip ...

  2. 路由网关(Zuul)

    上一篇已经讲了微服务组件中的 分布式配置中心,本章讲述 由JAVA编写的服务路由网关Zuul… - Zuul 路由是微服务体系结构的一个组成部分.例如 / 可以映射到您的Web应用程序,/api/us ...

  3. Using mlock ulimits for SHM_HUGETLB is deprecated

    Using mlock ulimits for SHM_HUGETLB is deprecated 前言 刚检查一个集群数据库的系统日志,发现如下信息: /var/log/message, [root ...

  4. POJ - 3463 Sightseeing 最短路计数+次短路计数

    F - Sightseeing 传送门: POJ - 3463 分析 一句话题意:给你一个有向图,可能有重边,让你求从s到t最短路的条数,如果次短路的长度比最短路的长度多1,那么在加上次短路的条数. ...

  5. mysql数据库 创建、查看、重命名、复制和删除的基本操作

    在数据库中,表是最重要.最基本的对象,是存储数据的基本单位.数据表从哪里来呢?数据表由关系模式转换而来.但不是简单的转换. 在设计表结构时要考虑下面几个方面: 字段名要通俗易懂且具有代表性,字段名不允 ...

  6. Beautiful Soup 4 方法便捷查询

    目录 BS4便捷查询 属性 子节点 父节点 兄弟节点 格式化输出 搜索文档树 修改文档树 BS4便捷查询 准备 : import requests, re from bs4 import Beauti ...

  7. Scala 面向对象(四):import

    1 Scala引入包基本介绍 Scala引入包也是使用import, 基本的原理和机制和Java一样,但是Scala中的import功能更加强大,也更灵活. 因为Scala语言源自于Java,所以ja ...

  8. python 面试题一:Python语言特性

    1 Python的函数参数传递 两个例子 a = 1 def fun(a): a = 2 fun(a) print a # a = [] def fun(a): a.append(1) fun(a) ...

  9. 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能

    ​性能分析器是Power BI前几个月推出的功能,主要用于检测视觉对象和DAX的性能如何,该功能的使用比较简单,首先勾选这个功能, 然后点击开始记录并刷新视觉对象,就可以看出每个元素耗费的时间,如下图 ...

  10. 数据可视化之分析篇(四)PowerBI分析模型:产品关联度分析

    https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...