javaSE
文章平均质量分 72
java基础知识学习
羡羡ˇ
嗨,你的JAVA从入门到精通了吗?
展开
-
java如何连接数据库? --- JDBC技术
JDBC(全程Java DataBase Connectivity)sql注入,我们知道, 数据库的类型有多种 , 那么java在连接各种各样的数据库时, 直接实现好连接方式并不是最优选择, 所以java向外提供了接口 , 只需要定义好规范, 由数据库开发商来实现如何连接即可搭建JDBC :原创 2022-03-25 21:59:58 · 2132 阅读 · 0 评论 -
线程的五种状态
线程也具有生命周期 , 分别是新建, 就绪, 运行, 阻塞, 死亡, 如下图 :什么时候是新建呢? 这里我们先以继承Thread类为例 :public class ThreadDemo extends Thread{ //重写run()方法 @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(i); }原创 2022-03-15 15:49:13 · 822 阅读 · 1 评论 -
线程与进程的关系,以及线程的四种创建方式
在创建线程之前,我们先来了解,什么是进程?什么又是线程?进程 : 进程就是运行中的程序 , 是操作系统进行资源分配的最小单位线程 : 线程是进程的进一步细化, 是一个进程内部的最小执行单元,是操作系统任务调度的最小单元一个进程里面可以包含多个线程, 没一个进程至少都有一个主线程,java中的main()方法也称为main线程 , 线程不能脱离进程 , 所有线程都共享进程中的内存资源了解完这两者之间的关系后,我们接着看线程如何创建?1. Thread类//继承Thread类publ原创 2022-03-14 18:35:10 · 807 阅读 · 0 评论 -
什么是对象序列化?
对象输入输出流对象序列化,transient关键字的用法为什么需要对象序列化 ? 在谈这个问题之前, 我们首先先来认识这两种流 : 对象的输出流: ObjectOutputStream , 对象的输入流: ObjectInputStream这两个流的作用是 : 用于写入对象信息与读取对象信息。 对象信息一旦写到文件上那么对象的信息就可以做到持久化了原创 2022-03-10 20:36:32 · 1554 阅读 · 0 评论 -
java对文件内容操作 -- 输入输出流
目录InputStream(输入字节流)和OutputStream(输出字节流)Reader(字符输入流)与Writer(字符输出流)Print 流我们通过对File类的学习, 了解到File类并不能去操作文件的内容,可以操作文件内容的则是以下这些实现类,现在来一一介绍InputStream(输入字节流)和OutputStream(输出字节流) 在谈这两个类之前,我们先来聊聊,什么是输入和输出呢 , 简单理解的话,我们编写的程序就相当于一个中转站, 首先将一个文件的内容输入...原创 2022-03-10 10:54:13 · 3276 阅读 · 0 评论 -
java-对文件操作的类:File
File类 File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录,File 类的对象可以对文件或者文件夹(目录)的属性进行操作,但不能直接对文件的内容进行操作 (对内容操作我们需要用到输入流和输出流), 例如删除,或者设置文件只读等属性构造方法 ://在当前目录下创建一个与aaa.txt文件名相关联的文件对象 File f1 = new File("aaa.txt"); //指明详细的路径以及文件名,请注意双斜线或用反斜杠 File f...原创 2022-03-09 00:00:19 · 535 阅读 · 0 评论 -
map 集合的特征以及遍历方式,以及TreeMap介绍
目录TreeMapMap接口的遍历方式我们知道, map 接口是双列 , 底下三个实现类 hashMap, TreeMap , HashTablehashMap 可参考:hashMap底层实现解析(负载因子0.75,初始容量16,键不重复)_xx12321q的博客-CSDN博客 hashTable 底层同 hashMap相同, 但是它在大部分方法上加了synchronized锁,是线程安全的(但是键不能存放null值)最后就是TreeMap(键采用红黑树存储)Tree...原创 2022-03-07 13:22:33 · 1002 阅读 · 0 评论 -
hashMap底层实现解析(负载因子0.75,初始容量16,键不重复)
目录HashMap为什么负载因子默认0.75呢?为什么初始容量设置为16呢 ?HashMap 我们知道 , hashMap是双列集合 , 存储的是键值对 , 键不能重复,值可以重复 , 是Map接口下面的实现类 , 底层采用哈希表+链表+红黑树实现 ,另外哈希表默认长度16,负载因子0.75, 扩容2倍,链表长度为8自动转为红黑树等等 , 接着来一一解释它们 我们先来了解 hashMap 的底层到底是怎样去存储元素的, 如下图 如图所...原创 2022-03-07 11:49:00 · 685 阅读 · 0 评论 -
位运算(java)
1.位运算原创 2022-03-06 18:09:26 · 217 阅读 · 0 评论 -
list 集合的多种遍历方式(为什么有迭代器?)
Iterator我们知道 , 如果我们要遍历一个 list 集合, 那么首先想到的会是 for 和增强for我们先来看这两种做法的局限性在哪public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.原创 2022-03-04 14:57:14 · 3272 阅读 · 1 评论 -
LinkedList结构详解(底层源码解析)
LinkedListlinkedList 也是 list 接口底下的实现类 , 底层是双向链表, 具有增删快的优点通过jdk 源码可以看到 , LinkedList 也实现了 Deque , 这说明你也可以将 LinkedList 看成一个队列或者一个栈 , 它具有这些的所有特性底层结点类如下 :可见它是一个双向链表...原创 2022-03-03 16:48:20 · 830 阅读 · 0 评论 -
ArrayList 详解(为什么初始容量10,扩容1.5倍?)
ArrayListArrayList 是 List 接口底下的实现类 , 底层是数组, 可自动扩容 , 满足数组的所有特性先来看它的构造方法ArrayList() : 构造一个初始容量为10的空列表ArrayList(collection<? exteds E> c) 构造一个包含指定集合的列表ArrayList(int initialCapacity) 构造一个指定初始容量的空列表从构造方法中可以看出 , 如果我们使用无参的构造方法的话 , 底层的数组默认长度就是10原创 2022-03-02 15:03:34 · 7256 阅读 · 0 评论 -
java为何提供各种各样的集合类?
当我们在存储一组相同类型的数据时 , 首先会想到使用数组但如果这组数据长度不明 , 并且不满足数组这样的存储结构时,我们该怎么办呢数组的缺点 : 长度一旦给定 , 就不能再变化所以在这种条件下 ,java定义了很多集合类来供我们使用 ,这些集合类实现了各种数据结构 , 可以满足我们存储数据的各种要求(例如数据是动态增长等 )下面介绍集合的体系认识Collection 和 Map接口Collection接口有两个子接口 , List 和 Set , 它们都是单列, 也就是说只能存储原创 2022-01-26 23:39:56 · 472 阅读 · 0 评论 -
快速了解 try catch finally 的作用
在异常处理中 try catch finally 这三个关键字往往形影不离 ,我们把它们组合在一起来对 出现的异常进行处理 ,一般使用方式如下 : try{ 可能会发生异常的代码 }catch(异常类型 引用名){ 异常处理代码 }finally{ 必须执行代码 }try : 用来检测不安全的代码块(检测异常) try块中任何一条语句发生了异常,下面的代码将不会被执行...原创 2022-01-25 12:18:37 · 3447 阅读 · 0 评论 -
如何区分throw与throws
throw 与 throws这两个关键字同样都是用在异常处理这一块的 , 虽然看似一样,但实际这两个区别不小先看定义 :throw : 用于显式抛出异常,抛出的时候是抛出的是一个异常类的实例化对象.throws : 定义一个方法的时候可以使用throws关键字声明,表示此方法不处理异常,而交给方法调用处进行处理。 先解释 throws , 也就是说 , 如果我们一个方法里可能会存在异常 , 我们在这个方法里并不处理, 而是告知 调用这个方法的地方去处理 ,如果是另一个方法去调用...原创 2022-01-24 22:04:09 · 262 阅读 · 0 评论 -
了解运行时异常与编译期异常
异常 : 程序中发生的不正常情况,是不可避免的,但可以去解决异常的父类都是ExceptionException的子类又分为RuntimeException(运行时异常) 和 其他(编译期异常例如SQLException等)除去运行期异常,其他都是编译期异常,也称为检测异常通过上图可以看到异常间的关系我们先来谈编译期异常 , 例 :这样的程序 , 我们非要去运行的话 ,就会抛出UnsupportedEncodingException(编码不支持异常)所以说,编译期...原创 2022-01-24 12:00:42 · 435 阅读 · 0 评论 -
3分钟了解 == 与 equals()的区别
== 与 equals()先看 == , 相信我们对 == 都不陌生 ,它用来比较值是否相等, 例:int a = 1 ;double b = 1.0 ;System.out.println(a==b);我们可以直接用 == 判断两个基本类型是否相等 ,这个结果为true但是如果我们用 == 来判断二个引用类型 ,那么它比较的就是两个引用所引用对象的地址是否一致例 :public class Car { String color; public Car(St原创 2022-01-23 23:42:48 · 235 阅读 · 0 评论 -
String , StringBuffer , StringBuilder的区别
首先, 从声明定义上来谈只有String 可以 直接声明创建而 StringBuffer 与 StringBuilder 必须去new对象这是因为只有String会在这种声明方式下去字符串常量池创建,其他则没有 StringBuffer stf = new StringBuffer("abc"); StringBuilder stb = new StringBuilder("abc");StringBuffer 和 StringBuilder 都继承自抽象类AbstractStr原创 2022-01-23 22:41:38 · 242 阅读 · 3 评论 -
String类常用方法示例
1. 用来判断,比较的方法 boolean equals(Object obj) //判断两个字符串内容是否相等 boolean equalsIgnoreCase(String str) //忽略大小写的条件下判断两个字符串是否相等 boolean contains(String str) //判断字符串中是否包含目标字符串 boolean isEmpty() ...原创 2022-01-22 23:14:22 · 351 阅读 · 0 评论 -
String类概述(特点及创建方式比较)
String 字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.先看 jdk 源码我们可以看出 , 字符串的底层是char[]数组创建一个字符串,有两种创建方式1. String s = "abcd"; 在 jvm 的层面上来说的话, 就是先在栈中创建一个对String类的对象的引用 s ,然后去字符串常量池中查找有没有 " abcd " ,如果没有则在常量池中添加 "abcd " ,...原创 2022-01-21 21:50:45 · 274 阅读 · 0 评论 -
认识和了解Object类
Object类 toString(),equals()与hashcode()方法的用法 我们说 , object 类是所有类的父类(这里的所有类包括java定义好的类和你自己创建的类),所有的类都默认继承了object,是所有类的祖先原创 2022-01-20 22:16:16 · 430 阅读 · 0 评论 -
java中的基本类型包装类
目录一 . 包装类概述二 . 装箱与拆箱一 . 包装类概述我们先来看两个问题1.什么是基本类型包装类? 这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作方法。例如Integer类包装一个int值2.我们都有基本类型了,为什么还要去定义这些包装类呢? Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代...原创 2022-01-19 21:12:45 · 6037 阅读 · 1 评论 -
什么是抽象类,接口?他们的区别?(详解)
目录1.抽象类2.接口3.抽象类与接口的联系与区别1.抽象类定义: 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类这么说可能不好理解,我们来换个说法: 抽象类无法被实例化,也就是我们不能去创建它的对象例: 动物类就是一个抽象类,因为你不能说出具体是哪种动物再来看一个概念 : 抽象方法• 抽象方法是一种特殊的方法:它只有声明,而没有具体的实现. • 抽象方法必须用abstract关键字进行修饰.例 :public a...原创 2022-01-18 21:53:15 · 5551 阅读 · 0 评论 -
this 与 super 关键字的用法与区别
目录1.this2.super3.二者之间的区别1.thisthis关键字代表自身类的对象使用this可以引用成员变量和成员方法例:public class Demo { int num=0; //成员变量 public Demo(int num){ //有参构造 this.num=num; } public Demo(){ //在无参构造方法里为成员初始化值 this(5); }原创 2021-12-07 14:51:10 · 1304 阅读 · 0 评论 -
final 关键字的用法
final● final 用于声明属性,方法和类。 • 属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。 • 方法:子类里不可以重写。 • 类:不能被定义为抽象类或是接口,不可被继承。用final修饰的属性等 : 意味是不可变的1.关于属性 用final修饰的属性必须赋值,要么直接赋值,要么构造方法里赋值例 :如上图,变量c没有赋值所以会报错,而b在构造方法里赋值,d一开始就进行了初始化另外,我们一旦进行了初始化就...原创 2021-12-06 19:50:43 · 342 阅读 · 0 评论 -
static关键字的用法
1.static ● static被称为静态,可以用来修饰类的属性,方法,代码块,内部类。 • 随着类的加载而加载 • 优先于对象存在 • 修饰的成员,被所有对象所共享 • 可不创建对象,直接被类调用...原创 2021-12-06 18:36:52 · 4005 阅读 · 0 评论 -
java中包的作用和访问权限修饰符(public,private,protected区别)
1.什么是包?作用? 包的概念 : 就是文件夹 作用 : 避免类重复 按照不同功能管理类 控制访问权限包的一些命名规范 :在包名中,可以使用.号来区分包的级别;包名一般情况下是小写 第一级 指该项目的类型,如com,org,gov等, 第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei等 第三级 指项目的名称,如:bcms,oa,erp,cms等 第四级 ...原创 2021-12-03 18:06:32 · 1051 阅读 · 0 评论 -
方法的重写和重载
1.什么是重载?用法? 方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。 为什么用重载 : 在编程过程中,是存在一定的编程规范的,所以这要求我们命名的方法名是要有实际意义的,有时相同的方法功能可能面临不同的参数选择,而为了规范与方便了解各个方法之间的关系,这就会用到重载,执行过程中会根据方法的参数来辨别方法来执行所以,重载是很大程度用来提高程序的可读性的,不用也不会影响程序运行例 :public void add(T val){ ...原创 2021-12-02 16:00:37 · 723 阅读 · 0 评论 -
什么是构造方法,构造方法的特征,作用
目录1.构造方法的定义与说明2.构造方法的声明与使用3.注意事项1.构造方法的定义与说明 构造方法 : 用来初始化对象的方法(1)构造方法名与类名相同,且没有返回值,且不需要使用void修饰。 (2)作用:在构造方法中为创建的对象初始化赋值, (3)在创建一个对象的时候,至少要调用一个构造方法。 (4)每个类都有构造方法。如果没有显式地为类定义构造方法,Java将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方...原创 2021-11-26 17:58:06 · 16784 阅读 · 0 评论 -
java里的数组
目录1.数组的基本概念和作用2.数组的创建3.数组的访问和迭代4.二维数组1.数组的基本概念和作用●数组的基本概念及作用 • 数组是相同数据类型元素的集合 • 数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,也可以存储引用数据类型。●数组在内存中是一块连续的存储空间2.数组的创建●数组的声明的两种方式: • 数据类型 [ ] 数组名字 例如:int [ ] a; • 数据类型 数组的名字 ...原创 2021-11-26 15:26:24 · 210 阅读 · 0 评论 -
javaSE 基本语法介绍
一.什么是注释?什么是关键字?保留字? 注释 :对程序功能的说明,以某种特定符号作为标记,程序在运行过程中不会执行注释. 我们一般用 // 后跟注释的内容 或者/* */来包含需要注释的内容 关键字:定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写,如class,public等 保留字:现有Java版本尚未使用,...原创 2021-11-02 14:23:18 · 85 阅读 · 0 评论 -
&与&&(短路与),| 与|| (短路或)的区别
目录1.“&”和“&&”的区别:2. | 和 || 的区别1.“&”和“&&”的区别:单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。例:看运行结果:可见 : 一模一样的表达式 &&并没有执行右边的运算,而&两边都执行了 ...原创 2021-11-03 18:53:57 · 1487 阅读 · 0 评论 -
java里的运算符
目录1.常用运算符介绍1.1下面列举一些算术运算符的用法1.2比较运算符 1.3 逻辑运算符1.4 赋值运算符2.运算符的优先级(运算顺序)1.常用运算符介绍算术运算符: +,-,*,/,%,++,--字符串连接运算符:+关系(比较)运算符: >,<,>=,<=,==,!=逻辑运算符: !,& , | , &&,||赋值运算符: = ,+ =,- =,* =,/ = 1.1下面列...原创 2021-11-03 18:07:43 · 397 阅读 · 0 评论 -
Java中jvm ,jre ,jdk的关系
目录一.java是如何实现跨平台运行的?二. jre是什么?与jvm的关系?三. jdk是什么?和jre,jvm的关系?总结一.java是如何实现跨平台运行的? 答 :就是因为有jvm(Java Virtual Machine,java虚拟机) 的存在 JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模 拟各种计算机功能来实现的,因为有了不同的JVM,所以不同的java程序在不同的操作系统中都可以执行. 这...原创 2021-11-02 01:04:54 · 140 阅读 · 0 评论 -
for, while 和 do-while的区别
1. for 循环语句for(表达式1; 表达式2; 表达式3){ 语句; … ; }执行过程 首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句, 接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.结果:可见,for循环我们是大致可以知道循环次数的2. while和do-while循环语句 while(逻辑表达式){ 语句; … ; } do { 语句; … ; } whi...原创 2021-11-04 15:20:50 · 266 阅读 · 0 评论 -
基本数据类型的用法
1.整数类型 byte short int long 如上图,表示了各个整型间的占用空间和表数范围 ● Java语言的整型常量默认为int型,就是说,程序中运算或其他得到结果如果是一个整数的话,java 就会把它当作一个int型来处理 ● 声明long型常量必须后加‘ l ’或‘ L ’ ,如: int i1 = 600; //正确 long l1 = 8888888888L; //必须加l 或L否则会出错例如: 接着我们来聊聊进...原创 2021-11-02 17:09:43 · 477 阅读 · 0 评论 -
if 和 switch 的区别
1. if 语句 ● if ● if .. else ● if .. else if ● if .. else if .. else if .. else根据条件执行if 语句 :if ( 令狐冲Java成绩 > 90 ) { 师父奖励令狐冲; }if .. else 语句if ( 令狐冲考试成绩 > 90 ) { 师父奖励令狐冲; }else { 师父罚...原创 2021-11-04 13:27:32 · 2915 阅读 · 0 评论 -
break,continue以及return的作用
目录1.break2.continue3.break1.breakbreak 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环例:int stop = 4; for (int i = 1; i <= 10; i++) { //当i等于stop时,退出循环 if (i == stop){ break; } System.out.println(" i= " + i);}结果:可见,当满足条件时,break直接跳出了此循环..原创 2021-11-26 14:31:30 · 931 阅读 · 0 评论