自十万个为什么之后。。。

一、Java 基础

1.JDK 和 JRE 和 JVM 有什么区别?(来源百度)

JDK
JDK:Java Development Kit
含义:Java开发工具包


JRE
全名:Java runtime environment
含义:Java运行环境


JVM
全名:Java Virtual Machine
含义:Java虚拟机

2.== 和 equals 的区别是什么?

①基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。
②引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。

3.以下两种中初始化方法str = new String("hello"),str = "hello"的内存分配,以及区别?

String str1 = new String("hello");
String str2 = "hello";
String str3 = "hello";
复制代码

此时在创建str3的时候会去检查常量池里面是否有"hello"这个字符串,如果有的话则不创建,直接地址指向。
String str="";这种方式创建的字符串都是在常量池中存在。
new String("")来创建的字符串都是在堆中开辟空间

?注:常量池:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. :存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)
6. 非RAM存储:硬盘等永久存储空间

4.接口、普通类、抽象类的区别以及用法?

⭐普通类 与 抽象类:
1、普通类可以去实例化调用;抽象类不能被实例化,因为它是存在于一种概念而不非具体。
2、普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。


⭐抽象类 与 接口:
1、抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
2、抽象类可以有具体的方法 和属性, 接口只能有抽象方法和不可变常量
3、抽象类主要用来抽象类别,接口主要用来抽象功能.
4、抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。
5、接口是设计的结果 ,抽象类是重构的结果

?使用方向:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

二、容器

1.List、Set、Map集合

ArrayList

创建初始化:4种方式

public static void main(String[] args) {/*** Arrays.asList方法初始化*/List<String> list1 = new ArrayList<String>(Arrays.asList("str1","str2","str3"));/*** 双大括号初始化(double brace initialization)或者匿名内部类初始化法* 这种方法一定程度上使代码更简洁,但同时可能降低可读性;* 使用双大括号初始化会导致内部类文件的产生,而这个过程就会影响代码的执行效率;* ⭐不推荐使用*/@SuppressWarnings("serial")List<String> list2 = new ArrayList<String>(){{add("str1");add("str2");add("str3");}};/*** 普通初始化*/List<String> list3 = new ArrayList<>();list3.add("str1");list3.add("str2");list3.add("str3");/*** Collections.ncopies初始化* 把element复制count次填入list4中*/int count = 5;String element = "hello";ArrayList<String> list4 = new ArrayList<String>(Collections.nCopies(count, element));
}
复制代码

增:

add(String e) :boolean
add(int index, String element) :void
addAll(Collection<? extends E> c) :boolean
addAll(int index, Collection<? extends E> c) :boolean
复制代码

删&过滤:

remove(Object obj) :boolean
remove(int index) :String
removeAll(Collection<?> c) :booleanremoveIf(Predicate<? super E> filter) :boolean //过滤
list3.removeIf(o -> o.indexOf('3') > -1);
list3.removeIf(new Predicate<String>() {@Overridepublic boolean test(String t) {return t.indexOf('4') > -1;}
});
复制代码

改:

E set(int index, E element)
复制代码

查:

int indexOf(Object o)
int lastIndexOf(Object o)
boolean contains(Object o)
复制代码
Vector

可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。
api: www.runoob.com/java/java-v…

创建初始化:

不带参数的构造函数初始化
Vector v;//初始化一个size为0的vector带参数的构造函数初始化
Vector v(10);//初始化size,但每个元素值为默认值
Vector v(10,"hello");//初始化了10个值为hello的元素通过同类型的vector初始化
Vector v(10,"hello");
//通过v初始化
Vector v2(v);
复制代码

增:

boolean add(Object o);
void add(int index, Object element);
boolean addAll(Collection c);
boolean addAll(int index, Collection c);
void addElement(Object obj);
void insertElementAt(Object obj, int index);
复制代码

删:

void clear();
复制代码

查:

boolean contains(Object elem);
复制代码
LinkedList

创建初始化:


复制代码
Queue
HashSet
TreeSet
LinkedHashSet
HashMap
TreeMap
HashTable

2.ArrayArrayList区别?

Array([]):最高效;但是其容量固定且无法动态改变;
ArrayList: 容量可动态增长;但牺牲效率;

对象数组与基本类型数组在运用上几乎一模一样,唯一差别在于,前者持有得是reference,后者直接持有基本型别之值; 例如:

String[] objArr = new String[100];
int[] basArr = new int[10];
复制代码

3.Arrays工具类

用于对数组操作的工具类

1,二分查找,数组需要有序
binarySearch(int[])
binarySearch(double[])2,数组排序
sort(int[])
sort(char[])……
3,将数组变成字符串。
toString(int[])
4,复制数组。
copyOf();
5,复制部分数组。
copyOfRange():
6,比较两个数组是否相同。
equals(int[],int[]);
7,将数组变成集合。
List asList(T[]);
复制代码

3.Collections工具类

1, 对list进行二分查找:
前提该集合一定要有序。
int binarySearch(list,key);
//必须根据元素自然顺序对列表进行升级排序
//要求list 集合中的元素都是Comparable 的子类。
int binarySearch(list,key,Comparator);2,对list集合进行排序。
sort(list);
//对list进行排序,其实使用的事list容器中的对象的compareTo方法
sort(list,comaprator);
//按照指定比较器进行排序3,对集合取最大值或者最小值。
max(Collection)
max(Collection,comparator)
min(Collection)
min(Collection,comparator)4,对list集合进行反转。
reverse(list);
5,可以将不同步的集合变成同步的集合。
Set synchronizedSet(Set<T> s)
Map synchronizedMap(Map<K,V> m)
List synchronizedList(List<T> list)
复制代码

4.迭代器 Iterator是什么?

转载于:https://juejin.im/post/5c9a0b0351882558976e2b44

自律·财大自习·Java相关推荐

  1. 匮乏即是富足,自律产生喜悦_当惊喜与喜悦分开时

    匮乏即是富足,自律产生喜悦 This is Part 1 of the CookieBot Case Studies, a series on reducing user confusion in c ...

  2. 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学习自律养成小程序后台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...

  3. 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学习自律养成小程序后台(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构 ...

  4. java计算机毕业设计校园约自习网站源码+mysql数据库+lw文档+系统+调试部署

    java计算机毕业设计校园约自习网站源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计校园约自习网站源码+mysql数据库+lw文档+系统+调试部署 本源码技术栈: 项目架构:B ...

  5. 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: ...

  6. java毕业生设计校园约自习网站计算机源码+系统+mysql+调试部署+lw

    java毕业生设计校园约自习网站计算机源码+系统+mysql+调试部署+lw java毕业生设计校园约自习网站计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语 ...

  7. java自习_java 自习室 day 24

    leetcode 211题 题目 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符 ...

  8. java自习_java自习重点及自测

    学士后U1-JA V A 重点(掌握目标) 一.java基础: a)Java开发环境的搭建(正确配置JDK) b)能够使用记事本开发java程序 c)掌握java的数据类型.数据类型之间的转换 d)理 ...

  9. 不满现状,三年逆袭拿下BAJTM高薪offer,自律的Java程序员到底有多可怕

    15年毕业,计算机专业出身,对软件开发很感兴趣,所以毕业找工作的时候就一直投IT行业的职位.刚踏入这个行业时,以为突击一下东拼西凑的面试材料,就能有个很好的收获.结果却是,别说大公司了,就是很多看不上 ...

最新文章

  1. mysql 编译安装
  2. .net 调用url接口_.NetCore中Quartz.NET的依赖注入
  3. 哲学家就餐(避免死锁)(多进程版)
  4. java 重启tomcat_linux下重启tomcat的命令
  5. CentOS7:搭建SVN + Apache 服务器
  6. Cover V2将启用两条产品线 本周开始进行V2 UI开发
  7. 四元数和欧拉角在线转换
  8. jQueryAPI_1.7.1 中文版
  9. 主机一拖二 linux,使opensuse12.1实现一拖二(拖机)的双人使用系统(上)
  10. 【软技能】完全写作指南--评论
  11. 很有意思的HDB3编解码--C++实现
  12. 晶体管放大电路之应用
  13. 【多字典公共键】快速找到多个字典的公共键及非公共键
  14. “(null)” is of a model that is not supported by this version of Xcode. Ple
  15. 一、与电视有关的视觉特性:
  16. TypeError: ufunc ‘isinf‘ not supported for the input types, and the inputs could not be safely...
  17. GK 1424 L劳易测标签识别开关
  18. 第三章、三元运算、文件处理、函数
  19. 【单片机】辉光管时钟系列<二>LCD液晶显示
  20. [windows]-windows安装Mac OSX

热门文章

  1. 环境搭建 | 深度学习爱好者如何配置带GPU电脑环境
  2. APT32F102-SIO模块控制WS2812
  3. 天才拓荒者之冯诺依曼
  4. 腾讯云人脸核身和人脸识别是什么
  5. LeetCode 825 friends-of-appropriate-ages
  6. uiuc的计算机工程硕士学费标准,伊利诺伊大学香槟分校学费及生活费一览(附美国学费最贵大学TOP20榜单)...
  7. Python爬虫:现学现用xpath爬取豆瓣音乐
  8. 腾讯会议PC端声音设置
  9. 循迹追踪令人头秃的Crash,十倍程序员的Debug日常(2)
  10. 如何阅读matlab项目并调试运行成,【转】读书笔记:MATLAB