一、java基础
1.JVM&JRE&JDK
- JVM:Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台(一次编译后,可以在多个系统平台上运行)。
- JRE:包括Java虚拟机和Java程序所需的核心类库(java.lang)。
- JDK:拥有java的开发工具。
2.字节码文件
字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),只面向虚拟机。
Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。
3.基础语法
1.数据类型
基本数据类型:
类型转换
由低向高,自动转换。
由高向低,可能会发生数据溢出,精度丢失。
运算时向高类型转换。
包装类及方法
对应的包装类和父类都在java.lang里。
静态方法valueOf():
- 参数为基本数据类型,返回包装类对象;
- 参数为String字符串(Character类没有以String为 参数的该方法),返回包装类对象
静态方法parseXXX():将字符串装换为对应的基本数据类型
非静态方法XXXvalueOf():将当前包装类对象转换为对应的基本数据类型,非静态方法不能直接调用类名。
自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)
保留小数
- 方法一:利用字符串的格式化函数
System.out.println(String.format(“%.2f”, s));
- 方法二:利用DecimalFormat类
- DecimalFormat df = new DecimalFormat(“#.00”);//后面几个0就表示几位。
System.out.println(df.format(s));
- 方法三:格式化字符串的输出方式
System.out.printf(“%.2f\n”, s);
取整
- 三目运算法(除法):向上:a / b + (a % b == 0 ? 0 : 1); 向下:a / b;
- 向上:Math.ceil(); 向下:Math.floor();
四舍五入
- Math.round();
引用数据类型:
- 类(class)
- 接口(interface)
- 数组([])
2.编码
Java语言采用Unicode编码标准
3.注释/javadoc标签@
- 单行注释://
- 多行注释:/* */
- 文档注释:/** */
标签:
/* * <p>项目名称: ${project_name} </p> * <p>文件名称: ${file_name} </p> * <p>描述: [类型描述] </p> * <p>创建时间: ${date} </p> * <p>公司信息: ************公司 *********部</p> * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a> * @version v1.0 * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] */
方法:
/** * @Title:${enclosing_method} * @Description: [功能描述] * @Param: ${tags} * @Return: ${return_type} * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a> * @CreateDate: ${date} ${time}</p> * @update: [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] */
4.访问修饰符
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- default (包访问权限)(即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。//Java访问权限之 protected详解_java protected-CSDN博客
- public : 对所有类可见。使用对象:类、接口、变量、方法
5.运算符
- 赋值运算符:“=”,复合“+=、-=、*=...”。
- 算术运算符:“+、-、*、/、%、++、--”。
- 关系运算符:“==、!=、<、>、<=、>=”。
- 逻辑运算符:与"&"、或"|"、异或"^"、非"!"、短路与"&&"、短路或"||"。 & 和 && 的区别: && 左边是false时,不计算右边的表达式,左假即假; & 无论左边真假都会计算右边的表达式。
- 位运算符
- 三目运算符:表达式1 ? 表达式2 : 表达式3。true:表达式2 or false:表达式3
- instanceof运算符:instanceof运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型),结果返回一个布尔值。
- 括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。
6.关键字
//访问修饰符
//数据类型
- 定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象
-
关键字
意思
备注,常用
class
类
public class A(){} 花括号里有已实现方法体,类名需要与文件名相同
interface
接口
public interface B(){} 花括号里有方法体,但没有实现,方法体句子后面是英文分号“:”结尾
abstract
声明抽象
public abstract class C(){} 介于类与接口中间,可以有也可以没有已经实现的方法体
implements
实现
用于类或接口实现接口public class A interface B(){}
extends
继承
用于类继承类 public class A extends D(){}
new
创建新对象
A a=new A(); A表示一个类
- 包的关键字
-
关键字
意思
备注,常用
import
引入包的关键字
当使用某个包的一些类时,仅需类名 然后使用ctrl+shift+o或者选定类名(类或属性或方法)按住ctrl+单击 即可自动插入类所在的包。如:JFrame 快捷键之后自动加入
import javax.swing.JFrame;
package
定义包的关键字
将所有有关的类放在一个包类以便查找修改等。如:package javake.flycat.draw002;
- 修饰方法、类、属性和变量
-
关键字
意思
备注,常用
static
静态的
属性和方法都可以用static修饰,直接使用类名.属性和方法名。 只有内部类可以使用static关键字修饰,调用直接使用类名.内部类类名进行调用。 static可以独立存在。静态块优先于其他方法/类的执行。
final
最终的不可被改变的
方法和类都可以用final来修饰
final修饰的类是不能被继承的
final修饰的方法是不能被子类重写。
常量的定义:
final修饰的属性就是常量。
super
调用父类的方法
常见public void paint(Graphics g){
super.paint(g); ··· }
this
当前类的父类的对象
调用当前类中的方法(表示调用这个方法的对象)
this.addActionListener(al):等等
native
本地
strictfp
严格,精准
synchronized
线程,同步
transient
短暂
volatile
易失
- 错误处理
-
关键字
意思
备注,常用
catch
处理异常 1.try+catch
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理。然后执行catch块后面的语句2.try+catch+finally
程序的流程是:运行到try块中,如果有异常抛出,则转到catch块,catch块执行完毕后,执行finally块的代码,再执行finally块后面的代码。
如果没有异常抛出,执行完try块,也要去执行finally块的代码。然后执行finally块后面的语句3.try+finally
程序的流程是:运行到try块中,如果有异常抛出的话,程序转向执行finally块的代码。那末finally块后面的代码还会被执行吗?不会!因为你没有处理异常,所以遇到异常后,执行完finally后,方法就已抛出异常的方式退出了。
这种方式中要注意的是,由于你没有捕获异常,所以要在方法后面声明抛出异常try
捕获异常
finally
有没有异常都执行
throw
抛出一个异常对象 一些可以导致程序出问题的因素,比如书写错误,逻辑错误或者是api的应用错误等等. 为了防止程序的崩溃就要预先检测这些因素,所以java 使用了异常这个机制.
在java中异常是靠 "抛出" 也就是英语的"throw" 来使用的,意思是如果发现到什么异常的时候就把错误信息 "抛出"
throws
声明一个异常可能被抛出
把异常交给他的上级管理,自己不进行异常处理。
throw与throws的区别
1.throws出现在方法函数头;而throw出现在函数体;
2.throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常;
3. throws可以单独使用,但throw不能;
7.控制流程语句
- break 跳出总上一层循环,不再执行循环(结束当前的循环体)
- continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
- return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)
8.快捷键
1、注释:
a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/
b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u)
c) 多行注释:[alt+shift+A]
d) 多行注释:/**
2、复制当前行:shift + alt +up/down
3、删除当前行:shift + ctrl + k
4、代码格式化:shift + alt +f
5、自动换行 : alt + z
6、折叠代码: ctrl + k + 0-9 (0是完全折叠)
7、展开代码: ctrl + k + j (完全展开代码)
8、选中代码 : shift + 鼠标左键
二、Java补考
判断题
1. javac 编译Java程序需要使用java(javac)命令。(×) java是执行命令。
2. 简单计算 在Java中,若有int x = 5,则表达式(x + 5)/3的值是3。
3. 数据类型 String是Java中定义的基本数据类型。
4. 类的方法 String类的equals()方法和==的作用是一样的。(×)
5. 二维数组 Java中二维数组既可以表示m行n列的规则数据,也可以表示多行数据,每一行的列数不相同的不规则数组。
6. 方法重载(java的一个特性是“多态性”。多态性包括两种: ①类内部多态(重载)。 ②继承中多态(覆写)。) Java中,同一个类中,不能有名称相同的方法。(×)
7. 异常(异常是指程序在运行过程中发生的,由于外部问题导致的程序运行异常事件,异常的发生往往会中断程序的运行。在 Java 这种面向对象的编程语言中,万物都是对象,异常本身也是一个对象,程序发生异常就会产生一个异常对象。) 异常也是一个对象。
8. 创建多线程 实现Runnable接口比继承Thread类创建线程的方式扩展性更好。(实现Runnable接口创建多线程和继承Thread类创建多线程相比,实现Runnable接口还可以继承其他类,因为Java中一个类只能继承一个类。)
9. 接口 PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
10. java Java程序源文件的扩展名为.class。(×)
单选题
错题:
1. 在Java中,以下构造方法的调用方式中,正确的是?(C)
A.按照一般方法调用
B.由用户直接调用
C.只能通过new自动调用
D.被系统调用
解释:在Java中,构造方法是在创建对象时自动调用的特殊方法。构造方法的主要作用是初始化对象的状态。因此,构造方法只能通过使用关键字"new"来创建对象时自动调用,而不能像普通方法一样直接调用或被系统调用。因此,选项C是正确的。
2. 数组与集合的描述不正确的是??()
A.数组是固定长度的;集合可变长度的。
B.数组可以存储基本数据类型,也可以存储引用数据类型;
C.集合可以存储基本数据类型,也可以存储引用数据类型;
D.数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。
精选:
3.下列哪一个关键字用于实现接口? (D)
A.extends(实现继承的关系)
B.interface(创建接口)
C.abstract(抽象)(public) abstract class 类名{} (public) abstract (void) (mothod)();
D.implements(实现接口)
4.要想在集合中保存没有重复的元素并且按照一定的顺序排序,可以使用以下(D)集合。
A.LinkedList <<LinkedList同时实现了List接口和Deque对口,也就是收它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(stack)>>
B.ArrayList(动态数组)
C.HashSet(哈希集)
D.TreeSet(使用红黑树数据结构来存储元素,这使得元素在集合中保持有序。)
5. trim()
- 去除
String
中的首尾空格; - 无法去除字符串中间含有空格的;
程序填空题
设计并实现类:VScode里
函数/编程题
VScode里
类设计(√)
接口(√)
多线程
异常
继承
主观题