JavaSE思维导图——总结篇

👨‍💻作者简介:学习时长两年半的java博主

🎟️个人主页:君临๑

 ps:点赞是免费的,却可以让写博客的作者开心好几天😎

进入正题。关于Java专栏的规划如下

写作计划:大概一周两篇博客

精品专栏的规划:Java基础专栏:从入门到入土

                             Mysql基础专栏

                             Java Web

                             SpringBoot专栏

                             SpringCloud专栏

                             等等

先以JavaSE为例,JavaSE的专栏规划如下:

文章目录

一、JavaSE思维导图

(一)JavaSE思维导图(视频版)

二、Java基础语法

(一)Java入门

1.配置环境变量

2.输出HelloWorld

3.注释 

4.基本数据类型

5.标识符

6.驼峰命名法

(二)运算符

1.算术运算符

2.隐式转换

3.强制转换

4.逻辑运算符

(三)流程控制语句

1.if语句格式

 2.switch语句

 3.for循环格式

4.while循环

 5.do...while循环

(四)数组

(五)方法(也叫函数)

三、Java的面向对象

(一)类和对象

1.类的定义

2.对象的使用

3.对象内存图

4.成员变量和局部变量

(二)关键字

1.this关键字

2.super关键字

3.static关键字

4.final关键字

四、Java中的集合

(一)Collection集合

1.List集合

2.Set集合

(二)Map

五、I/O技术

(一)File类

(二)IO流

1.字符流

2.字节流

六、多线程技术

(一)多线程的创建

(二)线程安全

(三)线程同步

七、网络编程

八、反射

九、泛型

十、枚举

十一、注解

十二、动态代理

十三、XML配置解析技术

十四、Java设计模式


一、JavaSE思维导图

(一)JavaSE思维导图(视频版)

JavaSE思维导图

二、Java基础语法

(一)Java入门

1.配置环境变量

作用:

如果我想要在CMD的任意目录下,都可以启动某一个软件,那么就可以把这个软件的路径配置到环境变量中的PATH里面。

在启动软件的时候,操作系统会先在当前路径下找,如果在当前录课没有再到环境变量的路径中去找。如果都找不到就提示无法启动。

步骤:

第一步:点击Win11搜索框输入环境变量。

第二步:点击高级系统设置。

第三步:选择高级,再点击下面的环境变量。

第四步:找系统变量里面的PATH。

第五步:点击新建,把软件的完整路径,配置到PATH当中,再点击确定即可。

2.输出HelloWorld

新建HelloWorld.java文件,执行即可

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
}

3.注释 

  • 单行注释:

// 这是单行注释文字
  • 多行注释:

/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
  • 文档注释:

/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/

4.基本数据类型

数据类型关键字内存占用取值范围
整数byte1负的2的7次方 ~ 2的7次方-1(-128~127)
short2负的2的15次方 ~ 2的15次方-1(-32768~32767)
int4负的2的31次方 ~ 2的31次方-1
long8负的2的63次方 ~ 2的63次方-1
浮点数float41.401298e-45 ~ 3.402823e+38
double84.9000000e-324 ~ 1.797693e+308
字符char20-65535
布尔boolean1true,false

5.标识符

  • 必须由数字、字母、下划线_、美元符号$组成。

  • 数字不能开头

  • 不能是关键字

  • 区分大小写的。

6.驼峰命名法

其一小驼峰命名法

适用于变量名和方法名

  • 如果是一个单词,那么全部小写,比如:name

  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

 其二大驼峰命名法

适用于类名

  • 如果是一个单词,那么首字母大写。比如:Demo、Test。

  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld

不管起什么名字,都要做到见名知意。

(二)运算符

1.算术运算符

    + - * / %(取余)

2.隐式转换

将小值赋给大值,自动转换

两种提升规则:

  • 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。

  • byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

取值范围的顺序:byte short int long float double

byte b = 100;
int i = b;//可以成功赋值

3.强制转换

将大值赋给小值,强制转换,数据的精度丢失

public class Demo2 {
    public static void main(String[] args) {
        double a = 12.3;
        int b = (int) a;
        System.out.println(b);//12
    }
}

4.逻辑运算符

&:逻辑与(而且)

两边都为真,结果才是真,只要有一个为假,那么结果就是假。

|:逻辑或(或者)

两边都为假,结果才是假,只要有一个为真,那么结果就是真。

!(取反)的使用:

是取反,也叫做非。

&&:

运算结果跟&是一模一样的,只不过具有短路效果。

||:

运算结果跟|是一模一样的。只不过具有短路效果。

短路效果:

当左边不能确定整个表达式的结果,右边才会执行。

当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。

(三)流程控制语句

1.if语句格式

格式:
if (关系表达式) {
    语句体;	
}

 if...else

格式:
if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

if...else if 

格式:
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
} 
…
else {
    语句体n+1;
}

 2.switch语句

switch (表达式) {
	case 1:
		语句体1;
		break;
	case 2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}

需求:键盘录入星期数,输出工作日、休息日。

 利用JDK12新特性:

switch (week) {
    case 1, 2, 3, 4, 5 -> System.out.println("工作日");
    case 6, 7 -> System.out.println("休息日");
    default -> System.out.println("没有这个星期");
}

 3.for循环格式

for (初始化语句;条件判断语句;条件控制语句) {
	循环体语句;
}
for (int i = 1; i <= 5; i++) {
    System.out.println("HelloWorld");
}

4.while循环

while(条件判断语句){
	循环体;
	条件控制语句;
}
while(i <= 5){
    System.out.println("HelloWorld");
    i++;
}

 5.do...while循环

初始化语句;
do{
    循环体;
    条件控制语句;
}while(条件判断语句);

(四)数组

概念:(一个固定容量的容器)

指的是一种容器,可以同来存储同种数据类型的多个值。

但是数组容器在存储数据的时候,需要结合隐式转换考虑。

注意事项:

数据类型:限定了数组以后能存什么类型的数据。

中括号:表示现在定义的是一个数组。

new:就是给数组在内存中开辟了一个空间。

数据类型:限定了数组以后能存什么类型的数据。

中括号:表示现在定义的是一个数组。

大括号:表示数组里面的元素。元素也就是存入到数组中的数据。

1.给数组限定什么类型? int
2.利用静态初始化完成创建并添加元素
int[] agesArr = new int[]{18,19,20,21,22};
int[] agesArr = {18,19,20,21,22};

(五)方法(也叫函数)

方法(method)是程序中最小的执行单元

  • 注意:

    • 方法必须先创建才可以使用,该过程成为方法定义

    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

无参方法例子:

public class Test {
    public static void main(String[] args) {
        //在main()方法中调用定义好的方法
        getMax();
    }

    //定义一个方法,用于打印两个数字中的较大数,例如getMax()
    public static void getMax() {
        //方法中定义两个变量,用于保存两个数字
        int a = 10;
        int b = 20;

        //使用分支语句分两种情况对两个数字的大小关系进行处理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

有参方法例子:

public class Test {
    public static void main(String[] args) {
        //在main()方法中调用定义好的方法(使用常量)
        getMax(10,20);
        //调用方法的时候,人家要几个,你就给几个,人家要什么类型的,你就给什么类型的
        //getMax(30);
        //getMax(10.0,20.0);

        //在main()方法中调用定义好的方法(使用变量)
        int a = 10;
        int b = 20;
        getMax(a, b);
    }

    //定义一个方法,用于打印两个数字中的较大数,例如getMax()
    //为方法定义两个参数,用于接收两个数字
    public static void getMax(int a, int b) {
        //使用分支语句分两种情况对两个数字的大小关系进行处理
        if(a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

三、Java的面向对象

(一)类和对象

1.类的定义

类的组成是由属性和行为两部分组成

  • 属性:在类中通过成员变量来体现(类中方法外的变量)

  • 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

public class Phone {
    //成员变量
    String brand;
    int price;

    //成员方法
    public void call() {
        System.out.println("打电话");
    }

    public void sendMessage() {
        System.out.println("发短信");
    }
}

2.对象的使用

public class PhoneDemo {
    public static void main(String[] args) {
        //创建对象
        Phone p = new Phone();

        //使用成员变量
        System.out.println(p.brand);
        System.out.println(p.price);

        p.brand = "手机品牌";
        p.price = 2999;

        System.out.println(p.brand);
        System.out.println(p.price);

        //使用成员方法
        p.call();
        p.sendMessage();
    }
}

3.对象内存图

当运行一个类时,这个类的字节码文件就会加载到方法区中临时存储。当方法被调用就要进栈,执行完就要出栈,而new出来的东西都会在堆内存。

4.成员变量和局部变量

  • 类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)

  • 内存中位置不同:成员变量(堆内存)局部变量(栈内存)

  • 生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)

  • 初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

(二)关键字

1.this关键字

区分成员变量与局部变量(在同名的情况下)

2.super关键字

子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super 关键字,修饰父类成员变量,类似于之前学过的 this

需要注意的是:super代表的是父类对象的引用,this代表的是当前对象的引用。

3.static关键字

有static修饰成员变量,说明这个成员变量是属于类的,这个成员变量称为类变量或者静态成员变量。 直接用  类名访问即可。因为类只有一个,所以静态成员变量在内存区域中也只存在一份。所有的对象都可以共享这个变量。

4.final关键字

final:  不可改变,最终的含义。可以用于修饰类、方法和变量。

类:被修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量:被修饰的变量,有且仅能被赋值一次。

四、Java中的集合

(一)Collection集合

1.List集合

ArrayList之增删改查

LinkedList之特有方法的使用

Vector 

public class Demo {
    public static void main(String[] args) {
        //创建集合
        Vector vector =new Vector();
        vector.add("苹果");
        vector.add("香蕉");
        vector.add("西瓜");
        //添加元素
        System.out.println("元素个数:"+vector.size());
        System.out.println(vector.toString());
        //删除
        vector.remove("西瓜");
        System.out.println("删除后元素个数:"+vector.size());
        //遍历
        Enumeration en =vector.elements();
        while(en.hasMoreElements()){
            String o=(String)en.nextElement();
            System.out.println(o);
        }
        //判断
        System.out.println(vector.contains("香蕉"));
        System.out.println(vector.isEmpty());
        //补充
        System.out.println(vector.firstElement());//获取首个元素并打印
        System.out.println(vector.lastElement());//获取尾元素并打印
        System.out.println(vector.elementAt(0));//获取某个位置的元素
        System.out.println(vector.get(0));//获取某个位置的元素





    }
}

2.Set集合

HashSet

public class Test {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Runoob");  // 重复的元素不会被添加
        System.out.println(sites);
    }
}

TreeSet

是一个包含有序的且没有重复元素的集合,通过TreeMap实现。
TreeSet是一个具有唯一元素的二叉树的集合,又被翻译为树集,是Java 集合框架的一部分。
TreeSet的特点
TreeSet的作用是提供有序的Set集合,主要特点如下:

  • 不可以存储重复元素
  • 没有索引
  • 可以将元素按照规则进行排序
  • TreeSet():根据其元素的自然排序进行排序
  • TreeSet(Comparator comparator):根据指定的比较器进行排序
     

(二)Map

HashMap

TreeMap

Hashtable

五、I/O技术

(一)File类

(二)IO流

1.字符流

2.字节流

六、多线程技术

(一)多线程的创建

多线程的实现方案一:继承Thread

定义一个子类 MyThread 继承线程类 java.lang.Thread ,重写 run() 方法
创建 MyThread 类的对象
调用线程对象的 start() 方法启动线程(启动后还是执行 run 方法的)

(二)线程安全

1. 线程安全问题发生的原因是什么?
多个线程同时访问同一个共享资源且存在修改该资源。

(三)线程同步

加锁让多个线程实现先后依次访问共享资源,这样就解决了安全问题。

七、网络编程

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

八、反射

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

九、泛型

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

十、枚举

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

十一、注解

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

十二、动态代理

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

十三、XML配置解析技术

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

十四、Java设计模式

学设计模式之前:关联:组合、聚合。依赖、继承、实现都是要了解的。

简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
工厂方法模式:定义一个用于创建对象的接口,但是让子类决定将哪—个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
抽象工厂模式:提供一个创建—系列相关或相互依赖对象的接口,而无须指定它们具体的类。
原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。
单例模式:确保一个类只有一个实例,并提供全局访问点来访问唯一实例。
适配器模式:将—个类的接口转换或客户希望的另—个接口。适配器模式让那些接口不兼容的类可以—起工作。

等共23种设计模式

以后会有专门的文章,详细讲解,这里只是列出专栏的大体框架。

下一篇 关于自己的年度学习计划(目前正在写)

(ps:能给个赞再走吗,这对我真的很重要)

题外话:其实我并不喜欢学习,也并不认为以后买菜要用到不定积分,但学好了能决定你以后在哪里买菜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【微服务 从0开始 】Spring Cloud 配置文件

&#x1f50e;这里是【秒懂云原生】&#xff0c;关注我学习云原生不迷路 &#x1f44d;如果对你有帮助&#xff0c;给博主一个免费的点赞以示鼓励 欢迎各位&#x1f50e;点赞&#x1f44d;评论收藏⭐️ &#x1f440;专栏介绍 【秒懂云原生】 目前主要更新微服务&#xff0c;…

抖音本地商家怎么做短视频运营?

抖音作为一款以短视频为核心的本地化社交平台&#xff0c;对于实体店的短视频运营来说&#xff0c;需要注重产品定位、目标人群、短视频制作、发布、私信评论维护和同行客户挖掘等方面。   一、做好产品定位   实体店在进行短视频运营时&#xff0c;首先需要做好产品定位。…

2021蓝桥杯真题图像模糊 C语言/C++

题目描述 小蓝有一张黑白图像&#xff0c;nm 个像素组成&#xff0c;其中从上到下共 n 行&#xff0c;每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。 现在&#xff0c;小蓝准备对图像进行模糊操作&#xff0c;操作的方法为&#xff1a; 对于每个像素&#…

首屏加载优化

最近沉迷逛某蓝色软件&#xff0c;收益良多&#xff01;万分感谢博主 海阔_天空&#xff0c;写的太棒了&#x1f44d;&#x1f389; 下面是原文链接&#xff0c;我在原文的基础上浅做个笔记&#xff0c;方便个人快速复习 前端性能优化——首页资源压缩63%、白屏时间缩短86% -…

溯源(五)之攻击源的获取

溯源&#xff08;一&#xff09;之溯源的概念与意义 溯源&#xff08;二&#xff09;之 windows-还原攻击路径 溯源&#xff08;三&#xff09;之Linux-入侵排查 溯源&#xff08;四&#xff09;之流量分析-Wireshark使用 溯源整体流程的思维导图 攻击源的获取 1、获取哪些数…

Spring Data JPA

1. Spring Data环境搭建 Spring Data提供了一套统一的基于Spring的数据访问模型&#xff0c;它可以轻松的实现数据库访问&#xff0c;包括各种关系型、非关系型数据库、Map-Reduce框架、云数据服务等。 Spring Data 包含多个子项目&#xff1a; • Commons - 提供共享的基础框架…

ExtScreen,为智能电视和VR设备打造的快应用引擎

和手机相比&#xff0c;智能电视端的生态一直都不怎么行&#xff0c;具体来讲有以下这几个问题&#xff1a; 电视芯片运算能力差&#xff0c;配置普遍不如手机&#xff1b;电视交互基于遥控器&#xff0c;完全不同于触摸屏操作的手机&#xff1b;电视的生态比较封闭&#xff0…

【JavaWeb】Cookie和Session

目录 Cookie Cookie定义 Cookie数据的来源 Cookie数据的存储 Cookie数据的使用 使用Cookie原因 Session Session定义 如何存储数据 Cookie和Session的区别 使用Cookie和Session简单实现登录页面 Cookie Cookie定义 Cookie是浏览器提供持久化存储数据的机制。 Cook…

这么方便吗?用ChatGPT生成Excel(详解步骤)

文章目录前言使用过 ChatGPT 的人都知道&#xff0c;提示占据非常重要的位置。而 Word&#xff0c;Excel、PPT 这办公三大件中&#xff0c;当属 Excel 最难搞&#xff0c;想要熟练掌握它&#xff0c;需要记住很多公式。但是使用提示就简单多了&#xff0c;和 ChatGPT 聊聊天就能…

【vue3】基础概念的介绍

⭐【前言】 首先&#xff0c;恭喜你打开了一个系统化的学习专栏&#xff0c;在这个vue专栏中&#xff0c;大家可以根据博主发布文章的时间顺序进行一个学习。博主vue专栏指南在这&#xff1a;vue专栏的学习指南 &#x1f973;博主&#xff1a;初映CY的前说(前端领域) &#x1f…

【音视频】zlmediakit总结一

推拉流理论 推流&#xff1a;将直播的内容推送至服务器的过程。 拉流&#xff1a;指服务器已有直播内容&#xff0c;用指定地址进行拉取的过程。 拉流&#xff0c;即是指服务器里面有流媒体视频文件&#xff1b; 但zlmediakit里也有个广义的拉流概念如下。对于用户而言&#xf…

面试官灵魂拷问[二]:SQL 语句中 where 条件后写上 1=1 是什么意思?

面试官灵魂拷问系列又来更新啦! “SQL 语句中 where 条件后写上 11 是什么意思&#xff1f;” 这玩意就跟很多新语言支持尾部逗号的原理一样的。 比如 Kotlin 支持数组写成 [1, 2, 3, 4, ] &#xff0c;注意4后边那个逗号&#xff0c;为什么呢&#xff1f;因为当你增加一个项…

医院LIS系统源码,云LIS系统源码,独立实验室LIS源码

实验室云LIS系统源码 LIS系统源码 LIS源码 基于B/S架构的实验室管理系统云LIS&#xff0c;整个系统的运行基于WEB层面&#xff0c;只需要在对应的工作台安装一个浏览器软件有外网即可访问。 私信了解更多源码内容&#xff01; 技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQ…

MySQL表设计思路(一对多、多对多...)

要开始单独负责需求了&#xff0c;捋一捋表设计的思路。 文章目录一、MySQL中的数据类型二、一对一的关系设计二、一对多的关系设计三、多对多的关系设计四、经验总结一、MySQL中的数据类型 字符串类型 varchar&#xff1a;即variable char &#xff0c;可边长度的字符串&#…

Tomcat启动JSP项目,搞起来了

虽然有点复古&#xff0c;但是还是有很多小伙伴在使用的&#xff0c;小编来一篇保姆级教程 1、用idea打开jsp项目 2、添加tomcat配置 3、点击后会出现配置框,这里画框的地方都选上&#xff0c;版本选择1.8&#xff0c;其他的信息内容默认后&#xff0c;点击确认 4、点击…

FITC-PEG-Biotin,荧光素-聚乙二醇-生物素的相关检测

FITC-PEG-Biotin 荧光素聚乙二醇生物素 英文名称&#xff1a;Fluorescein (polyethylene glycol) Biotin 中文名称&#xff1a;荧光素聚乙二醇生物素 激光/发射波长&#xff1a;515nm&#xff5e;520 nm 分子量&#xff1a;2000、3400、5000其他分子量可制定 溶剂&#xff…

【C++】异常

文章目录C传统处理错误方式C异常概念异常使用1.异常的抛出和捕获2.异常的重新抛出异常安全异常规范自定义异常体系C标准库的异常体系异常的优缺点C传统处理错误方式 C语言传统的错误处理机制&#xff1a; 1. 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以…

nodejs+vue文旅门户信息网站 elementui旅游项目推荐系统 景点门票预订网站vscode

在社会快速发展的影响下&#xff0c;服务行业继续发展&#xff0c;随着旅游的人数不断增加&#xff0c;使哈尔滨旅游项目推荐平台的管理和运营比过去十年更加信息化&#xff0c;依照这一现实为基础&#xff0c;设计一个快捷而又方便的网上哈尔滨旅游项目推荐平台是一项十分重要…

day73【代码随想录】二刷链表

文章目录前言一、环形链表||&#xff08;力扣142&#xff09;二、寻找重复数&#xff08;力扣287&#xff09;三、缺失的第一个正数&#xff08;力扣41&#xff09;每日一题day73&#xff1a;等差子数组&#xff08;力扣1630&#xff09;前言 1、等差子数组 2、寻找重复数 3、…

ThreeJS-纹理(十)

关键代码&#xff1a; const textureLoader new THREE.TextureLoader(); //纹理加载器加载图片 const docColorLoader textureLoader.load(static/1.webp) // let color new THREE.Color(Math.random(), Math.random(), Math.random()); const cubeMaterial new THREE.Mesh…