navicat中刷新表格内容快捷键 fn+f5
win10截图快捷键 Windows + Shift + S
idea中止运行快捷键 Ctrl+fn+f2
idea快速删除一行快捷键 Ctrl+Y
idea查看方法源码、跳转方法调用处快捷键 Ctrl+点击
idea单行注释快捷键 Ctrl+/
idea多行注释快捷键 Ctrl+Shift+/
idea2021.2.2导入数据库
jdbc:mysql://localhost:3306/jdbc?useSSL=false&serverTimezone=UTC
URL写法加上时区设置和ssL
idea中传入命令行参数
Java复习
数据类型
八种基本数据类型
1字节 byte 、boolean
2字节 short、char
4字节 int、float
8字节 long、double
引用数据类型
String:字符串,表示一组字符
Object:对象,表示 Java 程序中的实体
输入输出
//1.导Scanner包
import java.util.Scanner;
//输入输出
public class Sin {
public static void main(String[] args) {
//2.实例化Scanner对象
Scanner sc=new Scanner(System.in);
//3.根据输入类型使用不同方法
System.out.print("请输入字符串:");
String str=sc.nextLine();//读取到一行整体的字符串,包括空格
System.out.print("请输入整数:");
int i=sc.nextInt();
System.out.print("请输入小数:");
Double d=sc.nextDouble();
//打印输出
System.out.println("str=" + str + ",i=" + i + ",d=" + d);
}
}
字符编码
字符编码集(也称为字符集)是用来定义字符的。它定义了字符的数量,并为每个字符分配了一个唯一的编码。
Unicode 是一种用于表示文本的字符编码标准
字符编码标准 是将 Unicode 中定义的字符编码为存储在计算机上的二进制数据的方法
ASCII 最早的字符编码标准,只支持表示英文字符,每个字符用一个字节(8 位二进制)表示
UTF-8 是一种变长的 Unicode 字符编码标准,用于表示多种语言,每个字符使用 1 到 4 个字节
数据类型转换
自动类型转换
Java 会自动地将容量小的数据类型转换为容量大的数据类型
情况1:把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量
情况2:取值范围小的数据,和取值范围大的数据进行运算,小的会先提升为大的之后,再进行运算
byte short char三种数据在运算的时候,都会提升为int,然后再进行运算
强制类型转换
将容量大的数据类型转换为容量小的数据类型时使用的。这种转换需要开发人员手动进行,并且可能会导致精度丢失
格式:目标数据类型 变量名= (目标数据类型)被强转的数据
long l = 100000000L;
int i = (int) l;
计算机中进制
进制转换
其他进制---->十进制… … …按权展开
十进制---->其他进制… … …除基取余
变量和常量
变量
- 作用域
- 局部变量
定义在方法、构造方法、代码块等内部的变量- 成员变量
定义在类内部,但不在任何方法、构造方法、代码块内部的变量。成员变量的作用域为整个类,可以在类内部任何地方使用该变量
常量
- 关键字 final
命名规范
- 见名知意
- 驼峰命名法(变量方法)
- 类,首字母大写,驼峰命名
- 常量,大写+下划线
运算符
算术运算符 + - * / % ++ - -
赋值运算符 =
关系运算符 > < >= <= == instance of(用于检测对象是否为特定类的实例)
逻辑运算符 && || !
位运算符 & | ^ ~ >> << >>>
条件运算符 ? :
扩展运算符 += -= *= /=
包机制
域名倒写 baidu.com→com.baidu
防止命名冲突
package
import
流程控制
顺序结构
自上而下执行
选择结构
if
if–else
if–else if–else
switch jdk支持String类型 case穿透现象 break default
循环结构
while尽量避免死循环
do…while
forfor(int i=0;i<10;i++)
增强for循环,也称为 “for-each” 循环)是一种特殊的循环,它用于遍历数组或集合。它的语法如下:
for (type item : items) {
//语句
}
其中,type 是遍历的元素的数据类型,item 是一个变量,代表每一个遍历到的元素,items 是需要遍历的数组或集合。
跳转控制语句
break
跳除循环
continue
终止该次循环,继续执行下一次循环
带标签的continue
return
结束方法的运行
方法
方法的定义
修饰符 返回类型 方法名 (参数列表) {<方法体> return 返回值;}
方法的调用
类名.方法
对象.方法
方法重载
方法名相同,参数列表不同(个数、返回值类型、顺序)
命令行传参,给main方法传递参数
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
}
}
可变长参数
必须放在最后一个
递归
自己调用自己,给自己一个出口
数组
数组的定义
数组的使用
元素必须是同一个类型
通过下标拿到值
增加for循环遍历
String[] str=new String[]{"hi,I'm Tom.","Hello!","How are you?","Fine,thank you!"};
for (String s : str) {
System.out.println(s);
}
二维数组
int[][]
Arrays工具类
排序算法
冒泡排序,重复遍历数组,对相邻两项进行比较并交换,将最大或最小元素浮到最顶端。
选择排序,重复遍历数组,找到最大或最小元素,放在最后面,循环往复。
插入排序,从第二项开始遍历数组,将元素插入前面已排序的序列。
希尔排序,插入排序的改进版,利用“增量”对数组进行分组,再进行插入排序。
快速排序,选取一个中轴元素,将小于它的元素放在左边,大于它的元素放在右边,递归处理左右两个子数组。
归并排序,将数组分成两半,对每一半分别进行排序,再将两个有序数组合并。
堆排序,建立一个大根堆或小根堆,然后从根节点取出最大或最小值,进行排序。
基数排序,将数字分解为不同的数位,按数位从低到高进行排序。
面向对象
类与对象
类——模板type,对象——类的具体化value
构造方法
构造的重载
默认的无参构造,如果定义了一个有参构造必须加一个无参构造
new对象
栈存放引用
堆存放具体对象
封装
属性私有,get、set
继承
extends
Object
子类拥有父类的全部特性
方法重写
this当前类、super父类
java是单继承,一个类只能继承一个父类
多态
父类的引用指向子类的对象【左父右子】Person person=new Student();
instance of关键字,如果匹配,可以进行类型之间的转换
修饰符
接口
interface
约束,只能定义方法名
子类实现接口,必须重写接口中的所有方法
只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
接口比抽象类更抽象。抽象类可以有抽象方法(即不实现的方法)和非抽象方法(即已实现的方法),而接口只能有抽象方法。
一个类可以实现多个接口
内部类
指在另一个类的内部定义的类。内部类可以访问外部类的所有成员,包括私有成员。内部类在外部类外是不可见的,但是可以通过外部类的对象访问内部类。
成员内部类,定义在外部类中,但不在任何方法内。
局部内部类,定义在外部类的方法中。
静态内部类,定义在外部类中的静态内部类。
匿名内部类(重要),没有名称的内部类。
异常
Throwable:Exception【运行时异常,编译时异常】, error【AWT错误,JVM错误】
五个关键字
try{}
catch(xxxException e){…} 先小后大
finally{}
throw 手动抛出异常
throws 方法抛出异常
自定义异常
继承Exception类即可
常用类
Object类
所有类的父类,Object定义的一系列方法,java中的对象可以调用
hashcode(),返回对象的哈希码值,用于快速比较两个对象是否相同
toString(),返回对象的字符串表示。
clone(),克隆当前对象。
getClass(),返回对象的类型。
notify(),唤醒等待当前对象的线程。
wait(),让当前线程等待,直到其他线程调用该对象的 notify() 或 notifyAll() 方法。
equals(),比较两个对象是否相等,如果相等返回 true,否则返回 false。
Math类
提供了数学运算的方法,例如:min、max、abs、sin、cos等
Random类
生成随机数,UUID生成无序唯一的标识
File类
创建文件
查看文件
删除文件
修改文件
包装类
自动装箱和拆箱
8种包装类
Boolean,,Character,,Byte,Short,Integer,Long,Float,Double
Date类
Date
SimpleDateFormat yyyy-MM-dd HH:mm:ss
Calendar(建议使用)
String类
不可变性final,定长字符串
操作量较少
StringBuffer
可变长
append()
多线程数据量较大
效率低
安全
StringBuild
可变长
单线程数据量较大
效率高
不安全
String str=“a”+1+2 //a12
String str=‘a’+1+2 //100 [【‘a’=97】
String str=1+2+“a” //3a
StringBuilder 和StringBuffer 功能基本相似,方法也差不多。 不同的是,StringBuffer 是线程安全的,而StringBuilder 则没有实现线程安全功能,所以性能略高。 因此在通常情况下,如果需要创建一个内容可变的字符串对象,则应该优先考虑使用StringBuilder 类。