【Java】JavaSE概要

整理:【狂神说Java】JavaSE阶段回顾总结_哔哩哔哩_bilibili

JavaSE概要

简介

JDK:开发者工具包

JRE:运行环境

//Hello.java
public class Hello{
	public static void main(String[] args){
        System.out.println("Hello,World!");
    } 
}

Java是编译型语言

javac Hello.java #将Hello.java生成Hello.class
java Hello #java [className] [参数列表]:运行.class 文件 

生成文档

  • javadoc -encoding UTF-8 -charset UTF-8 Hello.class

基础语法

注释

  • inline comment
    • //
  • block comment
    • /**/
  • document comment
    • /** */
    • javadoc生成帮助文档

关键字

在这里插入图片描述

数据类型

进制转换

  • 0b 二进制
  • 0x 十六进制
  • o 八进制
八种基本数据类型(4+2+1+1)

4-整数

  • byte 1B
  • short 2B
  • int(默认) 4B
  • long 8B

2-浮点数

  • float 4B
  • double 8B

1-字符

  • char 2B
  • 编码方式
    • ascii
    • utf-8
    • Unicode
  • 转义字符

1-布尔类型

  • boolean 1bit
引用数据类型
  • class
  • interface
  • array

类型转换

自动类型转换

低转高

强制类型转换

高转低 (低)高

字节数,子类父类

变量和常量

变量作用域

type varName [=value]; #变量定义
  • 类变量
  • 实例变量
  • 局部变量

常量

final MAX_A = 10;

命名规则

  1. 驼峰(变量,方法)
  2. 类(首字母大写)
  3. 常量(大写+下划线)

运算符

算数运算符

+、 -、 *、 / 、 ++、 –

赋值运算符

=

关系运算符

> 、<、 >= 、<=

逻辑运算符

&& || !

位运算符

&
|
^异或
~
>>右移
<<左移

三目运算符

? :

扩展运算符

+=、-=、 *=、 /=

包机制

域名倒写

  • package:第一行,防止命名冲突
  • import

javaDoc

JDK帮助文档

javaDoc

  • @author:作者
  • @version:当前版本
  • @since:最初版本
  • @param:参数
  • @throws:异常

流程控制

Scanner

用户交互

public class ScannerDemo{
    public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
        
        while(scan.hasNext()){ //hasNextInt hasNextFloat hasNextDouble
            System.out.println((String)scan.nextline());
        }
    }
}

next与nextline的区别

  • next
    • 读取到有效字符才可以结束输入
    • 对输入有效字符之前的空白,next()方法将其自动去掉
    • 输入有效字符后,才将其后面输入的空白作为分隔符或者结束符
  • nextline
    • 以Enter为结束符,nextLine()返回的是输入回车之前的所有字符
    • 可以获得空白

顺序结构

程序默认的结构,自上而下

分支结构

  • if
  • if-else if-else
  • switch-case-default:case穿透现象——break

循环结构

  • while
  • do while
  • for(start;condition;++)
  • forEach

break&continue&return

方法

语句块的集合

方法定义

[返回值类型] 方法名([参数列表]){

	return [返回值];
}

方法调用

类名.方法

对象.方法

方法重载

名字相同,参数列表不同

命令行传参

main方法传参

可变长参数

必须放在最后一个参数

数组

定义

  • new int[size]
  • {a,b,c,d}

通过下标访问

  • ArrayIndexOutOfBounds

  • forEach遍历

    List.forEach((item)->{
        ...
    })
        
    for(ItemType item:List){
    	...
    }
    

二维数组

int [][]

Arrays工具类

排序算法

面向对象

类与对象

构造方法

重载

默认的无参构造

  • 手动定义有参,就必须要手动再加一个无参
  • 单例模式,需要构造器私有

new 对象

  • 栈存放引用
  • 堆存放具体的对象

封装

属性私有,get set

继承

extends——Java单继承,只能继承一个父类

Object

子类拥有父类的所有特性

方法重写

this

supper

多态

父类的引用指向子类的对象

​ Person person = new Student();

instanceof 关键字,如果匹配,可以进行类型之间的转换

修饰符

  • public
  • protected
  • private
  • static
  • final
  • abstract

接口 interface

只能定义方法名

子类实现接口,必须重写其中的方法

只有一个方法的接口交函数式接口,可以使用lambda表达式简化

一个类可以实现多个接口

内部类

  • 局部内部类

  • 静态内部类

  • 匿名内部类

异常

Throwable

  • Exception
    • 运行时异常
      • 1/0
      • ClassNotFound
      • NullPoint
      • UnknownType
      • IndexOutOfRange
    • 检查型异常
  • Error
    • AWT错误
    • JVM异常
      • StackOverflow
      • OutOfMemory

五个关键字

  • try{}
  • catch(){}先小后大
  • finally{}
  • throw内部手动抛出异常
  • throws方法抛出异常

自定义异常

继承Exception即可

常用类

Object类

  • hashcode()
  • toString
  • clone()
  • getClass()
  • notify()
  • wait()
  • equals()

Math类

  • 数学运算

Random类

  • 生成随机数
  • UUID

File类

  • 创建文件
    • create
  • 查看文件
    • mkdir
  • 修改文件
    • canwrite
    • canread
    • getPath()
  • 删除文件
    • delete

包装类

  • 自动装箱和拆箱

Date类

  • Date
    • new Date()
  • SimpleDateFormat
    • yyyy-mm-dd HH:mm:ss
  • Calendar
    • 建议使用

String类

  • 不可变性 ——final
  • 操作量较少
  • 定义
    • public String(byte byte[],Charset charset):流数组转换为指定编码的字符串
    • public String(StringBuffer buffer):StringBuffer转换为字符串
    • length
    • isEmpty
    • charAt(int index):索引获取指定位置字符
    • byte[] getBytes(String str):
    • indexOf(int ch):获取指定字符的下标
    • public String subString(int befinIndex):从beginIndex到结尾的字符串
    • String concat(String str):连接字符串
    • replace(char oldChar,char newChar):替换第一个
    • replaceAll(String regex,String ):替换全部
    • String[] split(String regex,int limit):将字符串分割成字符串数组
    • toUpperCase
    • toLowerCase
    • trim:去掉两端空格
  • String str = “a”+1+2 ==> “a12”
  • String str = ‘a’+1+2 ==> ascii(100) d
  • String str = 1+2+“a” =>“3a”

StringBuffer

  • 可变长——append()
  • 多线程数据量较大

StringBuilder

  • 可变长
  • 单线程数据量大
  • 效率高,不安全

集合框架

Iterator

Collection

List——有序可重复

ArrayList
  • add
  • remove
  • contains
  • size
LinkedList

链表

  • getFirst()、removeFirst
  • getLast()、removeLast
  • addFirst
Vector
Stack

Set——无序不可重复

HashSet——常用
TreeSet

Map

HashMap(重点)

  • JDK1.7:数组+链表
  • JDK1.8:数组+链表+红黑树

TreeMap

Collections工具类

泛型<>约束,避免类型转换之间的问题

IO流

IO
字节流
OutputStream
InputStream
序列化
反序列化
serializable
transient透明,序列化不考虑
字符流
Reader
Writer
处理流
buffer
bufferInputStream
bufferOutputStream
bufferReader
bufferWriter
data
DataInputStream
DataOutputStream
转换流
InputStreamReader
OutputStreamWriter
Filter
filterInputStream
filterOutputStream
filterReader
filterWriter
print
PrintWriter
PrintStream
object流
4个
节点流
charArray
charArrayReader
charArrayWriter
charArrayInputStream
charArrayOutputStream
StringReader,StringWriter
管道流pipe,pipedOutputStream
文件流File

多线程

进程和线程

run 和start的区别

  • start创建新线程

  • run执行完后返回主线程

线程创建方式

  • Thread
    • 继承Runnable
    • start0本地方法:java无权调用,底层的c处理
  • Runnable
    • 函数式接口
    • lambda
  • Callable
    • 可以有返回值

静态代理

new Thread(Runnable).start();

Lambda表达式

  • 函数式编程
  • 避免内部类定义过多,导致不便阅读
new Thread(()->{System.out.println();}).start();
  • 手动推导lambda

线程状态

新建

就绪

运行

阻塞

死亡

常用方法

sleep

join

yield

isLive

start

setPriority

interrupt

线程同步

多个对象操作同一资源,并发

前提:队列+锁

Synchronized

第一个线程进来拿到锁,后面排队,直到这个人释放锁,后面的锁才能放入

同步方法(锁太多)
同步代码块(常用)
死锁
死锁条件
  • 互斥
  • 请求保持
  • 不可剥夺
  • 循环等待

Lock(优先级高)

JUC

ReenTrantLock

  • lock
  • trylock
  • unlock

线程通信

缓冲区:消息队列

标志位:红绿灯

wait()

notifyAll

线程池

public ThreadPoolExecutor(
	int corePoolSize,//池大小
	int maximumPoolSize,//池最大
	long keepAliveTime,//池保持时间
	TimeUnit unit,//超时时间单位
	BlockingQueue<Runnable> workQueue,//阻塞队列
	ThreadFactory threadFactory,//线程创建工厂
	RejectedExecutionHandler handler//线程满机制
)

池化

池的大小

最大连接数

保持时间

网络编程

网络编程
IP
端口
TCP
三次握手
四次挥手
面向链接
UDP
无连接
Packet
URL
文件上传

GUI

GUI
AWT
Frame
监听事件
鼠标
键盘
窗口
动作事件
Swing
文本框
标签
按钮
文本域
面板
布局方式
关闭窗口
列表

注解和反射

注解与反射
注解
反射
元注解
内置注解
自定义注解
反射读取注解
Class
newInstance();
类加载机制
Method
invoke(user3,"秦疆")
存在重载,也需要写参数的类型
Field
set(user4,"秦疆")
Construct
newInstance();
获取的时候需要传递Class类型的参数
破坏私有关键字
setAccessible(true);
性能分析
正常>检测关闭的反射>默认的反射
反射获得注解,泛型
单例模式的探究
Stream
ForkJoin
效率对比

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

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

相关文章

Redis数据库

一、关系数据库与非关系型数据库概述 1、关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语…

Spring Boot基础学习之(六):前后端交互实现用户登录界面

本篇博客写的内容&#xff0c;是一个系列&#xff0c;内容都是关于spring boot架构的学习&#xff0c;实现前后端交互&#xff0c;极大的解放双手spring boot学习系列这是关于spring boot的专栏&#xff0c;后期也会不定期进行更新。内容都是有序号的&#xff0c;一步接着一步。…

有人物联口红DTU DR154配置与RS 485传感器数据处理

一、硬件设备 &#xff08;1&#xff09;有人物联口红DTU DR154&#xff08;RS 485版本&#xff09; 这个DTU非常给力&#xff0c;不用插卡自带esim卡&#xff0c;送8年流量&#xff0c;配置的话通过小程序【联博士】蓝牙配置&#xff08;手机扫描DTU背后的二维码即可&#x…

界面开发框架Qt新手入门教程 - 项目视图示例介绍

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。Qt提供了许多功能&…

java基础问答

57、synchronized 各种加锁场景的作用范围 1.作用于非静态方法&#xff0c;锁住的是对象实例&#xff08;this&#xff09;&#xff0c;每一个对象实例有一个锁。 public synchronized void method() {} 2.作用于静态方法&#xff0c;锁住的是类的Class对象&#xff0c;因为Cl…

chatgpt+安全机器人控制器+底盘一体化方案设计构想

“你有没有想过&#xff0c;你只需告诉你的家庭助理机器人&#xff1a;‘请加热我的午餐’&#xff0c;它就会自己找到微波炉。这是不是很神奇&#xff1f;” 近日&#xff0c;微软在其官网发表了一篇名为《机器人 ChatGPT&#xff1a;设计原则和模型能力&#xff08;ChatGPT …

MongoDB 6.0 入门(一)

为什么研究MongDB 6.0 今天和老大聊天 聊到了一个场景的设计&#xff0c;我刚开始推荐了 clickhouse &#xff0c;然后老大指出 前两天 测试的结果&#xff0c;因为clickhouse 因为 是列式存储&#xff0c;导致我们要查询一行数据&#xff0c;需要200ms&#xff08;库中有2000…

MyBatis源码分析(二、续)SqlSource创建流程,SQL如何解析?如何将#{id}变成?的

文章目录实例一、SqlSource处理入口二、SqlSource处理逻辑1、XMLScriptBuilder 构造方法2、解析动态sql3、DynamicSqlSource4、RawSqlSource解析sql&#xff08;1&#xff09;parse方法解析sql写在后面实例 此处我们分析的sql&#xff1a; <select id"selectBlog&quo…

redis 十. 线程基础

目录一. redis 基础复习与了解redis6二. redis 线程问题总结一. redis 基础复习与了解redis6 redis官网, redis中文网站, redis命令参考网站此处以redis6.0.8或以上版本为例(查看自己redis版本命令"redis- server -v")按照redis6以上版本测试使用时,redis.conf下需要…

Baklib:企业知识管理帮助文档制作平台

在当今的商业环境中&#xff0c;企业面临着越来越多的挑战。其中之一是如何管理并传递企业内部的知识。企业知识管理的重要性不言而喻&#xff0c;它可以帮助企业更好地组织和利用内部的知识资源&#xff0c;提高生产力和竞争力。而Baklib作为一款企业知识管理&帮助文档制作…

新四级强化辅导

词汇题&#xff08;55道&#xff09; 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词&#xff0c;主句谓语动词think over后面缺宾语&#xff0c;后面的宾语从句谓语动…

聚焦“专精特新” 共话高质量发展

3月23日&#xff0c;第七届杭州全球企业家论坛暨第三届中国专精特新企业&#xff08;新三板&#xff09;高峰论坛在杭州国博中心成功举办。超过500位专精特新企业代表、专家学者、政府部门代表、科研院所代表共聚一堂&#xff0c;现场座无虚席&#xff0c;气氛热烈。本届峰会以…

SQL Server 2016安装教程

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;欢迎订阅系列专栏&#xff1a;SQL Server 2016从入门到精通&#x1f947; &#x1f4…

借东风拉马力,龙头券商东方财富发展持续向好

3月17日&#xff0c;互联网券商东方财富公布2022年年报。具体来看&#xff0c;东方财富2022年实现总营收124.9亿元&#xff0c;同比下滑4.6%&#xff1b;归母净利润85.1亿元&#xff0c;同比下滑0.5%&#xff0c;略低于预期。其中&#xff0c;2022年第四季度总营收同比下滑15.4…

【Python课堂】使用Akshare高效获得A股可转债的重要信息

文章目录前言一、准备二、获取基本信息1.引入库2.读入数据3.获取行情数据4.可转债比价表总结前言 Akshare是一个非常好用的开源A股数据获取模块&#xff0c;它是基于 Python 的财经数据接口库&#xff0c;目的是实现对A股、美股、期货等金融产品的基本面数据、实时和历史行情数…

【干货】交换机管理

实验目的 熟悉掌握交换机的管理&#xff0c;包括&#xff1a;密码恢复&#xff0c;IOS升级和备份&#xff0c;IOS恢复 掌握实际工程中控制线的操作 交换机管理&#xff08;一&#xff09; 交换机密码恢复&#xff08;以下实验都需要在真机上操作&#xff09; 控制线和电脑的连…

oracle语句查询时间范围

oracle语句查询时间范围 参考网址 &#xff1a; https://blog.csdn.net/weixin_36436373/article/details/116541220?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167930069316800188562500%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%25…

Web自动化测试入门

1.Web自动化测试的价值&#xff08;为什么要做web自动化测试&#xff09; 我们可以使用脚本语言代替人来进行测试 2.Web自动化测试相关技术&#xff1a; Selenium:支持多语言&#xff0c;行业内最火最主流Pytest/JUnit5:最好用最全面的单元测试框架Allure:测试报告3.Web自动化…

多线程应用:定时器

一. 定时器 定时器(定时任务) 定时器是一种控制任务延时调用&#xff0c;或者周期调用的技术。作用&#xff1a;闹钟、定时邮件发送。 定时器的实现方式 方式一&#xff1a;Timer方式二&#xff1a;ScheduledExecutorService 二. Timer定时器 TimerTask继承了Runnable&#…

APT、对称加密、非对称加密、SSL工作过程技术的介绍

1. APT的简单介绍APT全称&#xff1a;Advanced Persistent Threat 高级可持续威胁攻击。指的是某组织对特定对象展开持续有效的攻击活动。这种攻击活动具有极强的隐蔽性和针对性&#xff0c;通常会运用受感染的各种介质&#xff0c;供应链和社会工程学等手段&#xff0c;实施先…