12Java枚举类和注解
什么是枚举类
枚举类的理解:类的对象只有有限个,确定的。我们就称此类是枚举类
当需要定义一组常量时,强烈建议使用枚举类
如果枚举类中只有一个对象,则可以做为单例模式的实现方法
自定义枚举类的使用123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package com.songzx.java;/** * 自定义枚举类的使用 * @author songzhengxiang * @create 2021-08-08 10:55 */public class Enumer1 { public static void main(String[] args) { // 使用枚举类中的变量 Season spring = Season.SPRING; Season summer = Season.SUMMER; Season autumn = Season.AUTUMN ...
11Java常用类
String 字符串的不可变性
String:字符串,使用一对 “” 引起使用
String 声明成 final 的,不能被继承
String 实现了 Serializable 接口,表示字符串可以实现序列化
String 实现了 Comparable 接口,表示字符串可以实现比较
String 内部定义了 private final char value[]; 用来存储字符串数据
String 代表不可变的字符序列。简称:不可变性
当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值
当对现有字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的值进行赋值
当调用 String 字符串的 replace 方法进行替换时,也需要重新指定内存区域进行赋值
通过字面量的方式(=赋值)(区别于new赋值)给定一个字符串赋值时,此时的字符串值声明在字面量常量池中
字符串常量池中是不会存储相同的字符串的
1234567891011121314151617// 使用等号给String类型的变量赋值属于字面量赋值,字面量赋值会保存到字 ...
10Java多线程
程序、进程、线程
程序(program):程序是为了完成特定的任务,用某种语言编写的一组指令的集合,即之一段静态代码,静态对象
进程(process):进程是程序的一次执行过程,或是正在运行的一段程序。是一个动态的过程。有它自身的产生,存在和消亡的过程 —— 声明周期
进程作为资源分配的单位,系统在运行时,会为每个进程分配不同的内存区域
线程(thread):进程可以进一步细化为线程,是一个程序内部的一条执行路径
线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器
单核CPU与多核CPU
单核CPU:是一种假的多线程,因为在一个时间单元内只能执行一个线程的任务
多核CPU:真正的多线程,一个时间单元内可以执行多个线程的任务,好比多车道,可以同时跑多辆汽车
并行和并发
并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事情
并发:一个CPU同时执行多个任务。比如:秒杀活动,多个人同时执行一件事情
使用多线程的优点背景:以单核CPU为例,只是用单个线程先后完成多个任务(调用多个方法),肯定要比使用多个线程来完成多个任务用时更短,那么为何还需要多线程呢?
多 ...
09Java异常处理
异常概述异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”,开发过程中的语法错误和逻辑错误不是异常
Java程序在执行过程中所发生的异常事件可分为如下两类
Error:Java虚拟机无法解决的严重问题,如:JVM系统内部错误、资源耗尽等严重情况。比如:StaticOverflowError 和 OOM。一般不编写针对性的代码进行处理
Exception:其他因编程错误或外部因素导致的一般性问题,可以使用针对性的代码进行处理:例如
空指针访问
试图读取不存在的文件
网络连接中断
数组角标越界
异常的分类
编译时异常
java.lang.Error
运行时异常
java.lang.Exception
常见的异常举例空指针异常 NullPointerException123456789101112/** NullPointerException* 空指针异常*/@Testpublic void test1() { int[] arr = null; System.out.println(arr[3]); // or St ...
08Java面向对象-下
静态变量与实例变量
含义:static 表示为静态的,静止的
static 可以用来修饰类中的属性、方法、代码块、内部类
注意:不能修饰构造器
static 的作用,我们将用 static 修饰的属性称为 静态属性,或者静态变量
按是否使用使用 static 修饰,分为 静态属性 VS 非静态属性(实例变量)
实例变量:我们创建了类的多个对象,每个对象都有一套独立的非静态属性。当修改其中一个对象的非静态属性时,其他对象中的属性值不会受到影响。
静态属性:我们创建了类的多个对象,多个对象会 **共享 ** 一个静态属性,当通过某个对象去修改这个静态属性时,其他对象都会受到影响,即其他对象再去调用这个属性时结果都是修改之后的值。
static 修饰符的其他说明
静态属性随着类加载而加载,可以通过 类.类变量 来调用静态属性
静态变量加载要早于类
由于类只会被加载一次,所以静态属性在内存中也只会保存一份,存在方法区的静态域中
123456789101112131415161718192021222324252627282930313233343536public class ...
07Java面向对象-中
Eclipse 快捷键
补全代码 Ctrl + /
快速修复 Ctrl + 1
批量导包 Ctrl + shift + o
批量单行注释 Ctrl + /
使用多行注释 Ctrl + shift + \
取消多行注释 Ctrl + alt + down 或 Ctrl + alt + up
删除指定行代码 Ctrl + d
上下移动代码 alt + up 或者 alt + down
切换到下一行代码空位 shift + enter
切换到上一行代码空位 Ctrl + shift + enter
查看源码 Ctrl + 选中指定结构
光标选中指定类,查看继承结构 Ctrl + t
调出生成 getter/setter 构造器等结构:alt + shift + s
Ctrl + t 查看类的继承关系
完成项目二项目源码地址
类的继承性继承性的好处
减少了代码的冗余,提高代码复用性
便于扩展功能
为之后多态的使用提供了前提
继承性的体现
继承的格式为 class A extends B{} , 表示为 A 继承了 B,A 为子类,B ...
06Java面向对象(上)
对象的特点
封装
继承
多态
类和对象的关系
类:类是抽象的,概念上的东西
对象:是实实在在的个体
对象时由类派生出来的
类和对象的创建和操作分为那三步
创建类
类的实例化
调用对象的结构,使用 对象.属性、对象.方法
面向过程和面向对象
面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。
面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做
实现一个类1234567891011121314151617181920212223242526272829303132333435363738394041/* * 面向对象的三大特征 * 封装、继承、多态 */public class javaobject01 { public static void main(String[] args) { // 实例化这个类,生成一个 per 对象 Person per = new Person(); // 给这个对象中的属性赋值 per.name = "张三"; per.age = 18; per.gender = ...
05Java数组
数组的概念概述数组(Array)是多个相同类型的数据按照一定的顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
概念
数组名
元素
下标、角标、索引
数组的长度,数组元素的个数
特点
数组是有序排列的
数组属于引用数据类型,而数组的元素既可以是引用数据类型,也可以是基本数据类型
创建数组对象会在内存中开辟出一块连续的空间
数组的长度一旦确定不能再修改
数组有一维数组、二维数组、三维数组、………
一维数组的声明和初始化静态声明123int[] ids; // 声明一个ids数组ids = new int[]{1001,1002,1003}; // 初始化这个数组的内容System.out.println(ids.length); //=> 3 ids的数组长度为3
动态声明123456789101112String[] names = new String[5];names[0] = "张三";names[1] = "李四";names[2] = "王五";names[ ...
04Java流程控制
if else 基本使用if else 有三种形式
单选一
二选一
多选一
123456789101112131415161718192021222324252627282930class IfElse { public static void main(String[] args) { int age = 60; // 只有一种结果 if(age > 18){ System.out.println("已经成年了"); } // 二选一 if(age > 18){ System.out.println("已经成年了"); }else{ System.out.println("未成年"); } // 多选一 if(age < 18){ System.out.println("未成年"); }else if(age < 35){ S ...
03Java算数运算
运算符运算符是一种特殊符号,用来表示数据运算、赋值和比较等操作
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
位运算符
三元运算符
常见运算符
符号
名称
用法
+
正号
+6
-
负号
-6
+
加法
3+2
-
减法
3-2
*
乘法
3*2
/
除法
10/2
%
取模(取余数)
10%2=0; 9%2=1
++
自增(前),先运算,后取值
a=2; b=++a; b=3
++
自增(后),选取值,后运算
a=2; b=a++; b=2
–
自减(前),先运算,后取值
a=2; b=–a; b=1
–
自减(后),先取值,后运算
a=2; b=a–; b=2
+
链接操作
a=”hello”; b=”word”; a+b=”helloword”
除法和取模12345678910111213141516171819202122232425262728293031323334353637class NumberTest{ public static void main(String[] args ...