Java面试集合(四)
1. jdk,jre,jvm之间的关系
JVM
是Java
虚拟机,是Java
跨平台的重要保障,JVM
实现Java
跨平台的前提,可以针对不同的操作系统,有不同的JVM
。
可以说Java
语言是跨平台的,但JVM
不是。
JRE
是Java
运行时环境,包含JVM
+核心类库。
JDK
是Java
开发工具包,包含开发工具+JRE
。
2. Java的分类 - JAVASE、JAVAEE、JAVAME
JavaSE
为标准版,JavaEE
为企业版,JavaME
为微型版
3. Java中关键的保留字
Java
中有两个关键字目前没有用,为goto
和const
,在Java
中,所有的关键字为小写。
4. 标识符
标识符规则:可以使用字母,数字,_ ,以及美元符号 $
,在Java
中可以使用中文命名,但建议不用使用,不能使用关键字,也不能以数组开头,注意区分大小写,要见名知意
5. 驼峰命名法
- 类名和接口名,如果有多个单词组成,那么每个单词的首字母要进行大写,如
HelloWorld
- 变量名和方法名,如果有多个单词组成,那么第一个单词的首字母要小写,其余的单词开头的首字母要大写,如
helloWorld
- 常量名,无论有多少个单词组成,所有字母都是大写,强调一点的是每个单词之间要以 _ 隔开,如
HELLO_WORLD
- 包名,无论有多少个单词组成,所有的字母都是小写,强调一点的是每个单词之间用以 . 隔开,如
cn.dashucoding.com
6. 注解
在Java
中的注解是用来解释说明代码的作用,有何用途,作为一名合格的程序员,必须懂得给代码添加注解。
单行注释
// 注释文字
多行注释
/*注释文字*/
文档注释
/**注释文字*/
文档注释中的文字是可以提取出来形成文档的
7. 字面量
字面量:指的是在计算机中不可变的值
1.整数常量(所有的整数)
2.小数常量(所有的小数)
3.字符常量(将一个字母、数字、符号,用 ‘’ 标识起来)
4.字符串常量(将一个或者多个字符用 “” 标识起来)
5.布尔常量(true和false)
6.空常量(null)
8. 进制
二进制:以0b/0B作为开头 (0~1,满2进1)
八进制:以0作为开头(0~7,满8进1)
十进制:没有特殊标识(0~9,满10进1)
十六进制:以0X/0x作为开头(09,af,满16进1)
进制间的转化
十进制转二进制:不断除以2,然后取余数
二进制转十进制:从最低位依次乘以2的位次次幂,然后求和
同理:
十进制转其他进制:除以对应的进制数,然后取余数
其他进制转十进制:从最低位依次开始,按位次乘以进制的位次次幂,然后求和
二进制转八进制,也是从低位开始,每三位二进制为一组,产生一个八进制数字,最高位不足三位,就补0,凑齐三位即可。
口诀:三变一
八进制转二进制,每一位八进制数都会产生三位二进制数字,不足三位就补0即可。
口诀:一变三
同理
二进制转十六位进制:口诀为四变一
十六位进制转二进制:口诀为一变四
9. 变量
格式:
数据类型 变量名 = 数据;
int i = 2;
// 变量的声明
int i;
// 变量的赋值
i = 2;
// 存储
bit为最小单位,8位为1字节(byte,简写为B)
数据类型
数据类型:基本数据类型 和 引用数据类型
基本数据类型
byte-1 short-2 int-4 long-8
float-4 double-8 char-2 boolean
long---l float---f
引用数据类型
引用数据类型:数组,类,接口
10. 数据类型的转换
数据类型的转换:
- 自动类型转换 / 隐式转换
- 强制类型转换 / 显式转换
自动类型转换:小的类型可以自动转为大的类型
char
可以转换为int
,long
可以转换为float
,其他往前转换,可能产生精度损失
// short char
// ok 可行 字面量如果在范围内允许转化
short a = ‘b’;
char c = 97;
// not 不可行 可能超过范围,所以不允许转化
char c = ‘a’;
short b = c;
强制类型转换:大类型强制转化为小类型,会可能会导致数据丢失精度
// 强制类型转换
double d = 3.14
int i = (int)d;
11. 运算符
+ - * / % ++ --
++ / -- 自增/自减
int j = i++; // j = i ; i++
int j = ++i; // ++i ; j = ++i
赋值运算符
= += -= *= /= %= &= |= ^= <<= >>= >>>=
关系运算符
> < >= <= == !=
逻辑运算符
& 与
Or 或
Not 非
^ 亦或
&& 短路与
|| 短路或
短路 表示如果前面的表达式正确,后面的就不再运行
&&:前边的表达式结果为false,后面的就不再运行
||:前面为true,后面就不再运行
位运算
& | ^ << 左移 >> 右移 >>> 无符号右移 ~ 取反
&,将1看作true,将0看作false,0&任何数为0,1&奇数为1,1&偶数为0。
| ,有1为1。
三元运算符
格式:
逻辑值?表达式1:表达式2
运算符的优先级
() ~ ++ -- ! * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值
一元运算 > 二元运算 > 三元运算 > 赋值
12. 流程控制
if,if-else, if-else if
分支结构
if(逻辑值){
代码块;
}
if(逻辑值){
代码块;
} else {
代码块;
}
switch(逻辑值){
case 值:
代码块;
break;
case 值:
代码块;
break;
...
}
switch
支持byte/short/char/int/String
while(逻辑值){
代码块;
}
do{
代码块;
} while(逻辑值);
while, do-while
for(定义循环变量; 控制条件; 改变循环变量){
代码块;
}
13. break和continue
break:
表示终止当前的一层循环结构
continue:
表示跳过当前一次循环继续下一个循环
14. 数组
格式:
数据类型[] 数组名 = new 数据类型[长度];
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3...};
int[] arr = new int[]{2,3,4,5,6};
int[] arr = {2,5,7,8,9};
数组的应用
- 数组名[下标]
- 数组名.length
- 遍历数组
- 获取数组中最值
- 数组的排序
- 反转数组
- 数组元素的查找
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
for(int i : arr){
System.out.println(i);
}
// 冒泡排序
for(int i = 1; i < arr.length; i++){
for(int j = 1; j <= arr.length - i; j++){
if(arr[j - 1] > arr[j]){
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
// 选择排序
for(int i = 1; i < arr.length ; i++){
for(int j = i; j < arr.length; j++){
if(arr[i - 1] > arr[j]){
int temp = arr[i - 1];
arr[i - 1] = arr[j];
arr[j] = temp;
}
}
}
数组:
Arrays.sort
,Arrays.toString
,System.arraycopy
,Arrays.copyOf
15. 内存
Java
内存:
栈内存、堆内存、方法区、本地方法栈、PC计数器(寄存器)
栈内存用来存储的是变量
堆内存用来存储的是对象
16. 方法
格式:
修饰符 返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
方法的重载
方法名相同但参数列表不同
方法的传值
方法的传值,基本类型传实际值,引用类型传地址
17. 快捷键
Ctrl + x 剪切
Alt + / 快捷提示键
Ctrl + Shift + o 导包
Ctrl + Shift + f 调整格式
Ctrl + F 搜索
Ctrl + D 删除一行
18. 成员变量和局部变量
- 成员变量在类中,局部变量在方法中
- 成员变量作用在整个类中,局部变量只能在它的方法中,或者语句中
- 成员变量存储在堆内存中,并自动赋予默认值;
- 局部变量存储在栈内存中,不自动赋予默认值
构造方法,与类名同名,没有返回值,构造方法可以重载
this
关键字,代表本类中的对象的引用
可以用this
调用本来中的对应形式的构造方法
面向对象的特征为封装,继承,多态
结语
- 下面我将继续对
Java
、Android
中的其他知识 深入讲解 ,有兴趣可以继续关注 - 小礼物走一走 or 点赞
Java面试集合(四)的更多相关文章
- Java面试集合(七)
前言: Java面试集合(六) 的回顾,对于final可以修饰常量,方法,和类,一旦常量定义好后就不可改变,而方法,用final来修饰方法,方法不可重载,继承,重写,final用来修饰类,该类不能被继 ...
- Java面试集合(一)
前言 大家好,给大家带来Java面试集合(一)的概述,希望你们喜欢 一 1.Java按应用范围可划分几个版本? 答:Java按应用范围有三个版本,分别是JavaSE,JavaEE,JavaME. 2. ...
- Java面试集合(三)
前言 大家好,给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类? 答:可以含有多个类,但只有一个是public类,public类的类名与文件名必须一致. 2 ...
- Java面试集合(二)
前言 大家好,给大家带来Java面试集合(二)的概述,希望你们喜欢 二 1.请问线程有哪些状态? 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked ...
- Java面试集合(三)-30道面试题
前言 大家好,我是 Vic,今天给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类?答:可以含有多个类,但只有一个是public类,public类的类名与文件 ...
- java面试复习题四
一.redis最大缓存和回收策略 二.常用的数据库Druid线程池的参数设置 三.Spring的几大特性和应用 参考 Spring的核心特性就是IOC和AOP,IOC(Inversion of Con ...
- Java面试集合(六)
1. abstract抽象 什么是abstract,中文为抽象,从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象.看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表 ...
- Java之集合(四)Vector和Stack
转载请注明源出处:http://www.cnblogs.com/lighten/p/7296023.html 1.前言 本章介绍Java集合List中的Vector和其子类Stack.Vector类是 ...
- Java面试集合(五)
1. 继承 在Java中的三大特性中存在一种为继承,继承究竟是用来解决什么问题的呢?在我们写代码的时候,我们会在一些类中使用相同的属性和方法,如两个不同的人(类),共同都有年龄,身高,体重等. 那么我 ...
随机推荐
- Windows Server 2012 正式版/标准版/数据中心版安装序列号密钥
Windows Server 2012(开发代号:Windows Server 8)是微软发布的一款服务器操作系统,也是Windows 8对应的服务器版本,属于是Windows Server 2008 ...
- wsl
1.win10设置为开发人员模式,并安装subsystem for linux(命令行输入bash就可以安装) 2.登录并su到root,然后修改/etc/sudoers,在最后一行加(一定要在最后一 ...
- File初识和练习
目录 File类 File对象的构建 File文件名.路径的获取 文件的状态 文件的其他操作 创建文件夹 列出下一级 实战练习1:列出子孙级目录及名称 实战练习2:列出文件及其子孙文件的总大小 实战练 ...
- python基础 (序列化,os,sys,random,hashlib)
1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...
- Numpy 数据类型
numpy支持的数据类型比Python内置的类型多很多,基本上可以和C语言的数据类型对应上, 其中部分类型对应为Python内置的类型.下表列举了常用的Numpy基本类型. 名称 描述 bool_ 布 ...
- Apollo
下载源码: https://github.com/nobodyiam/apollo-build-scripts#%E4%B8%80%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9 ...
- SringMVC概述
Spring为展现层提供的基于MVC设计理念的优秀的WEB框架,是目前最主流的MVC框架之一. Spring3.0后全面超越Struts2.0,成为最优秀的MVC框架,SpringMVC通过一套注解, ...
- NPOI颜色对照表
颜色对照表:颜色 测试 Class名称 short Test颜色 Black 8 Test颜色 Brown 60 Test颜色 Olive_Green 59 Test颜色 Dark_Gr ...
- AJAX随笔1
[1] AJAX简介 > 全称: Asynchronous JavaScript And XML > 异步的JavaScript和XML > AJAX就是通过JavaSc ...
- vue 图片下载到本地,图片保存到本地
必须同源(访问的网站域名与服务器域名一致)才能下载 downs() { var alink = document.createElement("a"); alink.href = ...