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. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  2. Python分析最近大火的网剧《隐秘的角落》,看看网友们有什么看法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 估计最近很火的连续剧<隐秘的角落>大家趁着端午假期都看过了吧? ...

  3. Java编程资料

    Java相关免费编程书籍推荐(都是PDF版) 编程进阶 2017年9月11日 IDE IntelliJ IDEA 简体中文专题教程 https://github.com/judasn/IntelliJ ...

  4. 读CSAPP第一章的收获

    这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...

  5. POJO类中布尔类型为啥不让用isXxx命名

    源码面前,了无秘密 <阿里开发规范泰山版>(2020.04.22)-->编程规约-->(一) 命名风格-->第8条规定: [强制]POJO 类中的任何布尔类型的变量,都不 ...

  6. C++输出三角图形

    输出像这样的三角图形 3            1           1 1          1    1         1 1 1 1        1          1       1 ...

  7. MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构

    DAO重构后的代码 package com.litian.jdbc; import org.apache.commons.beanutils.BeanUtils; import java.sql.*; ...

  8. scrapy 基础组件专题(九):scrapy-redis 源码分析

    下面我们来看看,scrapy-redis的每一个源代码文件都实现了什么功能,最后如何实现分布式的爬虫系统: connection.py 连接得配置文件 defaults.py 默认得配置文件 dupe ...

  9. POJ 1095 Trees Made to Order 最详细的解题报告

    题目来源:Trees Made to Order 题目大意:根据下面的规则给一棵二叉树编号: 规则1:如果二叉树为空,则编号为0: 规则2:如果二叉树只有一个节点,则编号为1: 规则3:所有含有m个节 ...

  10. 10-Python文件操作

    一.文本文件和二进制文件 文本文件存储的是普通“字符”文本,python 默认为unicode 字符集(两个字节表示 一个字符,最多可以表示:65536 个). 二进制文件:二进制文件吧数据内容用‘字 ...