前言

对Java部分基础知识进行复习总结,没事可以看看。

目录

一、基础语法

1.1 Java名词

1.2 Java关键字

1.3 基本数据类型(4类8种)

(1)整数类型

(2)浮点类型

(3)字符型

(4)布尔型

1.4 基本数据类型包装类

(1)对应关系

(2)装箱与拆箱

(3)一些包装类方法

1.5 引用数据类型

(1)String类

(2)接口

(3)数组

二、流程控制

2.1 顺序结构

2.2 选择结构

(1)if语句

(2)switch语句

2.3 循环结构

(1)while 和do while

(2)for和增强for

2.4 break、continue、return

三、面向对象

3.1 构造方法、代码块、抽象类和栈堆内存

(1)声明对象和Lombok使用

(2)代码块

(3)抽象类

(4)栈堆内存

3.2 继承、封装、多态

(1)继承

(2)封装

(3)多态

3.3 内部类

四、异常处理

4.1 异常类关系

4.2 异常处理

(1)捕获异常

(2)抛出异常

(3)throws和throw

4.3 自定义异常

五、泛型注解

5.1 泛型

5.2 注解

(1)普通注解

(2)元注解

(3)自定义注解

六、JDBC

总结
​​​


Java安装操作如下:

首先去官网(Java 软件 | Oracle 中国)下载JDK,我这边下载的是JDK19,然后进行安装。

然后进行环境变量配置,在目录下编辑.bashrc文件,在文件中添加如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk-19
export PATH=$PATH:$JAVA_HOME/bin

在终端输入source .bashrc使之生效,通过输入java -version验证是否安装成功。

Maven安装操作如下:

首先去官网(Maven)下载,下载完之后解压到安装目录里,这里假定安装目录为/usr/lib/。

然后进行环境变量配置,在目录下编辑.bashrc文件,在文件中添加如下内容:

export MAVEN_HOME=/usr/lib/apache-maven-3.8.6
export PATH=$PATH:$MAVEN_HOME/bin

在终端输入source .bashrc使之生效,通过输入mvn -version验证是否安装成功。

Java和Maven环境变量配置具体如下图所示:

如果使用VSCODE进行编写代码的话,在VSCODE中安装Java、Maven相应插件,之后配置如下:

  "java.jdt.ls.java.home": "/usr/lib/jvm/jdk-19","maven.terminal.useJavaHome": true,"maven.executable.path": "/usr/lib/apache-maven-3.8.6/bin/mvn","maven.settingsFile": "/usr/lib/apache-maven-3.8.6/conf/settings.xml","java.configuration.maven.userSettings": "/usr/lib/apache-maven-3.8.6/conf/settings.xml"

如下图所示:


一、基础语法

1.1 Java名词

JDK:Java开发环境,包括编译(Javac)、解释(Java)、打包(Jar)等工具。

JRE:Java运行环境,由Java的虚拟机和Java的API构成。

JVM:Java虚拟机。

字节码本质是一种标准化可移植的二进制格式。格式为.Class。一个Java程序可由不同的.Class文件构成。

1.2 Java关键字

abstract  class extends implements null strictfp true
assert  const false import package super try
boolean continue final instanceof private switch void
break  default finally int protected synchronized volatile
byte do float interface public this while
case double for long return throw
catch else goto native short throws
char enum if new static transient

其中goto、const在Java中没有任何意义。

strictfp用来确保浮点数运算的准确性,例如:

public strictfp class Test1 {public void sumab(float a,double b){double sum = a + b;System.out.println(sum);}@Testpublic void test(){float a = 0.123f;double b = 0.0123d;new Test1().sumab(a,b);}}

运行结果:

0.13530000339746476Process finished with exit code 0

instanceof用于测试它左边的对象是否是它右边的类的实例,例如:

public class Test1 {@Testpublic void test(){int[] array = {1,2,3,4,5,6};System.out.println(array instanceof int[]);}
}

运行结果:

trueProcess finished with exit code 0

transient只能用来修饰成员变量,被transient修饰的成员变量不参与序列化,静态成员变量也不能被序列化,不管有没有transient关键字。

1.3 基本数据类型(4类8种)

(1)整数类型

byte 字节数1 -128、127
short  字节数2 -32768、32767
int  字节数4 -214783648、14783647
long 字节数8 -1L、031L、0X19L、0b11001L

(2)浮点类型

float 字节数4 1.35
double 字节数8 1.35f

(3)字符型

char 字节数2 'D'、'好'

(4)布尔型

boolean  字节数1 true、flase

1.4 基本数据类型包装类

(1)对应关系

byte  Byte
boolean Boolean
short  Short
char Character
int Integer
long Long
float Float
double Double

(2)装箱与拆箱

public class Test1 {       @Testpublic void test(){// 装箱Integer a = new Integer(10);// 拆箱int result = a.intValue();System.out.println(result+result);// 自动装箱Integer b = 20;// 自动拆箱int result2 = b;System.out.println(result2+result2);}
}

运行结果:

20
40Process finished with exit code 0

(3)一些包装类方法

public class Test1 {       @Testpublic void test(){String a = "123";//将字符串转换成整型int b = Integer.parseInt(a);//将整型变为字符串String c = String.valueOf(b);System.out.println(a.getClass().getName());System.out.println(c.getClass().getName());}
}

运行结果:

java.lang.String
java.lang.StringProcess finished with exit code 0

包装类对象之间值比较使用equals()方法。

1.5 引用数据类型

(1)String类

查找字符串的方法indexOf()、lastIndexOf(),例如:

public class Test1 {@Testpublic void test(){String a = "abcde";System.out.println(a.indexOf("a"));System.out.println(a.lastIndexOf("b"));}
}

运行结果:

0
1Process finished with exit code 0

判定字符串一致的方法为equals()和==:equals()是比较值是否相等,==是否引用同一位置。例如:

public class Test1 {@Testpublic void test(){String a = "abcdef";String b = new String("abcdef");System.out.println(a.equals(b));System.out.println(a==b);}
}

运行结果:

true
falseProcess finished with exit code 0

String、StringBuffer、StringBuilder:String是只读字符串,一旦被初始化,就不能改变,每次改变都会生成新的字符串,浪费内存;StringBuffer内容可改变,不生成新对象,节约内存,线程安全;StringBuilder操作效率比StringBuffer高,非线程安全。

public class App
{public static void main( String[] args ){String a = "abcd";System.out.println(a);StringBuffer b = new StringBuffer("abcd");System.out.println(b);StringBuilder c = new StringBuilder("abcd");System.out.println(c);}
}

(2)接口

接口中有常量、抽象方法,也有非抽象方法,接口中定义的量为常量,无构造方法,例如:

public interface TestInterface {public static final int num =  1;public abstract void aaa();public abstract void bbb(int num);public default void ccc(){System.out.println("ccc");}
}

接口必须有子类,子类可同时实现多接口,例如:

interface aaa{public abstract void print();
}
interface bbb{public abstract void get();
}
class ccc implements aaa,bbb{public void print(){System.out.println("aaa");}public void get(){System.out.println("bbb");}
}

一句话:单继承,多实现

(3)数组

数组初始化,例如:

public class Test1 {@Testpublic void test(){int[] array1 = {1,2};int[] array2 = new int[]{1,2};int[] array3 = new int[2];array3[1] = 1;array3[2] = 2;int[][] array4 = {{1,2},{1,2,3},{1,2}};}
}

数组遍历方式,例如:

public class Test1 {int[] array1 = {1,2};int[][] array2 = {{1,2},{1,2,3}};@Testpublic void test(){for (int i = 0; i < array1.length; i++) {System.out.println(array1[i]);}for (int a:array1) {System.out.println(a);}for (int i = 0; i < array2.length; i++) {for (int j = 0; j < array2[i].length; j++) {System.out.print(array2[i][j]);}System.out.println();}for (int[] a:array2) {for (int b:a) {System.out.print(b);}System.out.println();}}
}

冒泡排序法,例如:

public class Test1 {int[] array1 = {1,2,1,6,2,3,5,4,3};@Testpublic void test(){for (int i = 0; i < array1.length; i++) {for (int j = i+1; j < array1.length; j++) {if (array1[i]<array1[j]){int temp = array1[i];array1[i] = array1[j];array1[j] = temp;}}}for (int a:array1) {System.out.print(a+" ");}}
}

Arrays工具类,属java.util包下的类,常用方法例如:

public class Test1 {int[] array1 = {1,2,1,6,2,3,5,4,3};int[] array2 = {1,2,3,4,5,6};@Testpublic void test() {Arrays.sort(array1);//数组的遍历System.out.print(Arrays.toString(array1));System.out.println();//二分法查找有序数组    System.out.println(Arrays.binarySearch(array1,1));System.out.println(Arrays.equals(array1,array2));//数组复制int[] array3 = Arrays.copyOf(array2,3);//数组全部填充10Arrays.fill(array3,10);System.out.print(Arrays.toString(array3));}
}

运行结果:

[1, 1, 2, 2, 3, 3, 4, 5, 6]
7
false
[10, 10, 10]

二、流程控制

结构化程序设计,面向过程编程POP

2.1 顺序结构

public class Test1 {@Testpublic void test1(){System.out.println("语句1");System.out.println("语句2");System.out.println("语句3");}
}

2.2 选择结构

(1)if语句

if...else和位语句,例如:

public class Test1 {int a = 1;@Testpublic void test1() {if(a>0){System.out.println("a>0");}else if (a<0){System.out.println("a<0");}else {System.out.println("a=0");}}@Testpublic void test2(){if(a>0){System.out.println("a>0");}if(a<0){System.out.println("a>0");}if(a==0){System.out.println("a=0");}}
}

(2)switch语句

switch,例如:

public class Test1 {int a = 2;@Testpublic void test() {switch (a){case 1:System.out.println("1");break;case 2:System.out.println("2");break;default:System.out.println("未知");break;}}
}

运行结果:

2Process finished with exit code 0

2.3 循环结构

(1)while 和do while

while和do while,例如:

public class Test1 {int a = 2;@Testpublic void test() {while(a<3){a+=1;}System.out.println(a);do{a+=1;}while (a<10);System.out.println(a);}
}

运行结果:

3
10Process finished with exit code 0

(2)for和增强for

public class Test1 {@Testpublic void test1(){int[] array = {1,2,3,4,5,6,7};for (int i = 0; i < array.length; i++) {System.out.print(array[i]);}System.out.println();for (int a:array) {System.out.print(a);}}
}

运行结果:

1234567
1234567
Process finished with exit code 0

2.4 break、continue、return

public class TestJava {public static void main(String[] args){while(true) {System.out.println("猜数字,请输入猜测的数字:");Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();switch (a){case 10:System.out.println("猜测正确");break;case 9:System.out.println("没有猜对哦,猜测结束了");return;case 8:System.out.println("猜测错误");break;case 7:System.out.println("猜测错误");break;case 6:System.out.println("猜测错误");break;case 5:System.out.println("猜测错误");break;case 4:System.out.println("猜测错误");break;case 3:System.out.println("猜测错误");break;case 2:System.out.println("猜测错误");break;case 1:System.out.println("猜对一半,请继续");continue;case 0:System.out.println("猜对一半,请继续");continue;}break;}System.out.println("谢谢参与");}
}

三、面向对象

面向对象编程OOP

3.1 构造方法、代码块、抽象类和栈堆内存

(1)声明对象和Lombok使用

声明对象:类名称  对象名称  =  new  类名称()

new是作为开辟堆内存的唯一方法,实例化对象

类名称()是构造方法

Lombok的导入

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope>
</dependency>

@Data:相当于写了getter、setter、equals、hasCode、toString等方法

@AllArgsConstructor:相当于写了全参构造函数

@NoArgsConstructor:相当于写了无参构造函数

public interface PhoneInterface {public void listen();
}@Data
@AllArgsConstructor
@NoArgsConstructor
public class Phone implements PhoneInterface{private String brand;private int price;public void listen(){System.out.println(brand+"手机听歌");}
}public class Test1 {@Testpublic void test() {Phone phone = new Phone("华为",12);phone.listen();}
}

运行结果:

华为手机听歌Process finished with exit code 0

(2)代码块

静态代码块执行级别最高。静态代码块优先于构造代码块优先于构造函数。

静态代码块只执行一次,构造代码块、构造函数可执行多次。代码块例如:

public class TestJava {static{System.out.println("我是静态代码块");}public TestJava(){System.out.println("我是构造方法");}{System.out.println("我是构造代码块");}public static void main(String[] args){for (int i = 1; i < 3; i++) {System.out.println("创建第"+i+"个对象");new TestJava();}}
}

运行结果:

我是静态代码块
创建第1个对象
我是构造代码块
我是构造方法
创建第2个对象
我是构造代码块
我是构造方法Process finished with exit code 0

(3)抽象类

抽象类必须有子类,使用extend继承抽象类,也是单继承,可含普通方法,有构造方法。抽象类例如:

abstract class Phone {private double size = 1.5;public void openPhone(){System.out.println("手机开机");}public abstract void closePhone();
}

(4)栈堆内存

内存分为三部分:栈、堆、方法区

栈内存:保存堆内存的地址、对象名称。

堆内存:保存真正的数据、对象属性信息、new出来的东西。

一块堆内存可被多个栈内存所指向。

例如如下代码用栈、堆、方法区图示:

public class TestJava {int a;String b;public TestJava(int a,String b){this.a = a;this.b = b;}public static void main(String[] args) {TestJava testJava = new TestJava(1,"嗯嗯");}
}

3.2 继承、封装、多态

(1)继承

父类能出现的地方子类一定也要能出现。

public class TestJava {public static void main(String[] args) {Student student = new Student(50,"化学");student.eat();student.Study();}
}
@AllArgsConstructor
class Person{int height;void eat(){System.out.println("我有"+height+"公斤重,我要吃饭");}
}
class Student extends Person{String learn;public Student(int height,String learn) {super(height);this.learn = learn;}void Study(){System.out.println("我在学习"+learn);}
}

运行结果:

我有50公斤重,我要吃饭
我在学习化学Process finished with exit code 0

(2)封装

Java访问权限修饰符:public、private、protected、default

public class TestJava {public static void main(String[] args) {Person person = new Person();person.setHeight(10);person.speak();}
}
@Data
class Person{private int height;void speak(){System.out.println("我的体重是"+height);}
}

(3)多态

父子类对象转型:向上转型、向下转型

向上转型:父类 父类对象 = new 子类类型

向下转型:子类 子类对象 = (子类)new 父类对象

public class TestJava {public static void main(String[] args) {Father father = new Son();father.fatherMethod();((Son) father).sonMethod();Son son = (Son) new Father();son.fatherMethod();son.sonMethod();}
}
class Father{public static void fatherMethod(){System.out.println("父类方法");}
}
class Son extends Father{public static void sonMethod(){System.out.println("子类方法");}
}

3.3 内部类

标识符class外部类{

外部类成员

标识符class内部类{

内部类成员

}

}

四、异常处理

异常,计算机无法正常处理的情况

4.1 异常类关系

Error为JVM错误,无需自己处理,Exception为程序可处理异常。

4.2 异常处理

(1)捕获异常

两种方式try...catch和try...catch...finally。

public class Test1 {@Testpublic void test() {try{int a = 1/0;}catch (ArithmeticException arithmeticException){System.out.println("算术异常");}finally {int b = 10/2;System.out.println(b);}}
}

运行结果:

算术异常
5Process finished with exit code 0

(2)抛出异常

使用throws抛出异常。

public class Test1 {@Testpublic void test() {try{throw new ArithmeticException();}catch (ArithmeticException arithmeticException){System.out.println("算术异常");}}
}

(3)throws和throw

throws抛出异常,需要调用者解决,throw抛出异常,在内部自己消化。

4.3 自定义异常

一是继承Exception,二是编写构造方法,传入异常信息,三是调用时通过throw向外抛出异常。

public class TestJava {public static void main(String[] args) {try{throw new MyException("有异常了");}catch (MyException myException){System.out.println(myException);}}
}
class MyException extends Exception{public MyException(String e){super(e);}
}

五、泛型注解

5.1 泛型

泛型类、泛型方法、泛型接口和泛型通配符,例如:

public class aList<E> {List<Object> list = new ArrayList<Object>();void add(E e){list.add(e);}void print(){for (Object n:list) {System.out.println(n);}}
}public class TestJava {public static void main(String[] args) {aList<String> list=new aList<String>();list.add("aaa");list.print();aList<Integer> list1=new aList<Integer>();list1.add(12);list1.print();}
}

5.2 注解

(1)普通注解

@Override、@Deprecate、@SuppressWarnings

(2)元注解

元注解就是对注解的注解。

@Target、@Retention、@Documented、@Inherited

(3)自定义注解

public class TestJava {public static void main(String[] args) {try{TestJava testJava = new TestJava();Method method = testJava.getClass().getMethod("aaa");Annotation[] annotations = method.getAnnotations();for (Annotation an:annotations) {System.out.println(an);}Annotation an = method.getAnnotation(aaa.class);System.out.println(an);}catch (Exception e){e.printStackTrace();}}@Deprecated@aaa(name = "张三")public void aaa(){}
}
@Retention(RetentionPolicy.RUNTIME)
@interface aaa {public String name() default "methodname";
}

六、JDBC

也是一个超简单的JDBC示例,真实的肯定不这么写。

首先导入包依赖。

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version>
</dependency>

然后JDBC代码示例如下,查询语句。

public class Test1 {@Testpublic void Test() throws SQLException {Driver driver = new Driver();DriverManager.registerDriver(driver);String url="jdbc:mysql://XXX.XX.XXX.XXX:3306/demo1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";String user="root";String password="a13XXXXXXXXXXXXXXXXXXX";Connection connection =DriverManager.getConnection(url, user,password);Statement statement = connection.createStatement();String sql="select * from dept;";ResultSet resultSet =statement.executeQuery(sql);while(resultSet.next()){int deptno= resultSet.getInt("deptno");String dname = resultSet.getString("dname");String loc = resultSet.getString("loc");System.out.println(deptno+" "+dname+" "+loc);}statement.close();connection.close();}
}

总结

以上就是对Java部分非常基础的知识进行复习总结,进阶的复习总结详见Java复习总结笔记(下)。

Java基础复习总结笔记(上)相关推荐

  1. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  2. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  3. 2020604 Java基础复习

    2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...

  4. Java基础知识学习笔记总结

    Java学习笔记总结 java基础复习 1. 抽象类可以有构造器,可以有一个非抽象的父类 2. 垃圾回收机制回收的是堆里面的内存,栈里面的数据自动入栈自动出栈 3. 引用类型的数据在堆当中,内存中操作 ...

  5. (CZ深入浅出Java基础)线程笔记

    这是刘意老师的JAVA基础教程的笔记 讲的贼好,附上传送门 传智风清扬-超全面的Java基础 一.线程的引入 1.多线程概述 进程 a.正在运行的程序,是系统进行资源分类和调用的独立单位. b.每个进 ...

  6. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

  7. 夯实JAVA基础(个人笔记)

    夯实JAVA基础(个人笔记) 一.Java 异常处理 二.泛型 三.集合 四.算法 五.输入与输出(字节流和字符流) 六.并发和多线程 七.网络连接 八.lambda表达式 九.反射 十.Java S ...

  8. Java基础复习(六)

    Java基础复习(六) 常见关键字总结 1.final关键字 final用来修饰类.方法和变量. (1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不 ...

  9. Java基础知识之笔记总结分享

    Java基础知识之笔记总结分享 给大家分享一篇我之前在学习java过程中的关于java基础部分的笔记,比较详细,内容也比较多. 如有问题请指出以便修改,谢谢. 篇幅较长建议收藏浏览. 1 环境变量配置 ...

最新文章

  1. C#多态性-抽象类对象引用子类实例
  2. 第十六届智能车竞赛参赛队伍提问-6-11
  3. linux ruby gem 安装目录,linux 安装 gem
  4. 2-10日偶听某箴言
  5. OS--进程间通信详解(一)
  6. [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互?
  7. 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的
  8. matlab对有周期性噪声的图像去噪,数字图像中去除周期性噪声研究.doc
  9. tomcat ---- 启动,关闭和配置等等
  10. 黑客攻防从入门到精通 1-6章
  11. 关于AMS117_3.3V电源芯片导致CH340串口芯片重启的问题
  12. mysql repaire_Repair MySQL Replication遇到的错误(一)
  13. 嵌入式系统开发环境概述
  14. MFC - LNK2001 “无法解析的外部符号”的几种情况及解决办法
  15. 1D卷积入门:一维卷积是如何处理数字信号的
  16. mysql主从安装配置
  17. 山地自行车系统的组成部分及论如何自己组装一台山地车
  18. IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!
  19. 计算机控制实验PID数字控制器设计,实验二数字PID控制器的设计
  20. Photoshop 2020投影被裁切,显示不完整的解决办法

热门文章

  1. 第十六周模测——ZJM要抵御宇宙射线
  2. Python对电影Top250并进行数据分析
  3. 天嵌科技——TQIMX6Q光盘8月更新说明
  4. Python期末复习
  5. Apache的配置文件详细解释
  6. java判断一个字符串是否是数字(包括正数,负数,小数)
  7. 短租民宿多平台房态同步管理系统
  8. 个人博客系统功能展示
  9. python简单代码画皮卡丘-利用Python绘制萌萌哒的皮卡丘
  10. 小资金超短线如何实现快速翻倍?