Java基础学习
Java基础
BinaryJack
这个作者很懒,什么都没留下…
展开
-
Java多线程,博客学习笔记
Java多线程进程与线程Java 中线程实现方式实现Runnable接口继承Thread类线程的状态变化线程的操作方法线程的强制运行,join线程的休眠,sleep中断线程,interrupt后台线程,setDaemon线程的优先级,setPriority线程的礼让,yield同步以及死锁同步代码块,synchronized(同步对象)同步方法,synchronized 方法返回值 方法名称死锁,参考 https://mp.weixin.qq.com/s/5bu547-EsgX0BMQwh68XKQ进程原创 2020-08-10 11:42:40 · 1217 阅读 · 3 评论 -
Java 笔记 28:sql
Java 笔记 28sqlsqljava.sql包和javax.sql包JDBC是代表一组公共的接口。JDBC中的这些公共接口和DBMS数据库厂商提供的实现类(驱动jar),是为了实现Java代码可以连接DBMS,并且操作它里面的数据而声明的。常用的接口:Connection:连接Statement和PreparedStatement:增删改查ResultSet:接收和处理查询结果辅助的类:DriverManager:驱动管理类。JDBC程序的编写步骤:1、注册驱动(如果这步原创 2020-08-09 14:14:57 · 98 阅读 · 0 评论 -
Java 笔记 27:SQL,7个约束,6个函数,关联查询的4种连接,Select6大子句
Java 笔记 277个约束主键约束唯一键约束非空约束默认值约束检查约束:check(mysql不支持)自增约束外键约束约束的等级(5个)6个函数字符串函数数学函数日期时间函数流程控制函数加密函数分组函数关联查询的4种连接关联查询内连接左连接右连接使用UNION来实现全外连接Select6大子句7个约束主键约束1、主键约束特点:(1)一个表有且只能有一个主键约束(2)主键约束意味着,唯一并且非空(3)主键约束名PRIMARY(4)创建主键会自动创建对应的索引,同样删除主键对应的索引也会删除原创 2020-08-06 15:24:00 · 543 阅读 · 0 评论 -
Java 笔记 26:MYSQL,SQL
Java 笔记 26数据库mysql 卸载与安装连接mysqlmysql数据类型导入和导出sqlDDLDML数据库1、为什么要使用数据库?(1)持久化(永久保存)(2)方便管理数据2、数据库:Database,简称DB通俗的讲,就是数据的仓库,专门存储数据的它保存了一系列有组织的数据的文件系统或数据结构。3、数据库管理软件,数据库管理系统,DBMS Database Management Systemmysql,oracle,sql server,db2,redis…数据库管理软件:操原创 2020-08-05 10:09:13 · 393 阅读 · 0 评论 -
Java 笔记 25:Lambda表达式,Stream,Optional
Java 笔记 25Lambda表达式函数式接口:SAM接口一、消费型接口二、供给型接口三、判断型接口四、功能型接口Lambda表达式Supplier和Consumer自定义函数式接口:lambda表达式的方法引用Stream一、创建Stream二、中间的加工操作三、终结操作OptionalLambda表达式Lambda表达式是函数式编程的风格,是为了给SAM接口的变量和形参赋值的一种语法。目的:减少代码的冗余,增加可读性。示例1:开启一个线程,这个线程的任务:打印“hello”要原创 2020-08-03 20:48:50 · 214 阅读 · 0 评论 -
Java 笔记 24:类的加载,类加载器,反射,工厂设计模式,代理设计模式
Java 笔记 24类的加载类加载器(4种)如何获取Class对象?4种 重点类的加载类的加载:1、加载:把字节码读取到内存2、连接(1)验证(2)准备: 例如:给类变量(静态变量)在方法区分配内存,非final的赋默认值,但是如果是final的,直接赋常量值。(3)解析 虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程这里1,2完成时,在方法区中已经有一个能够代表当前类的Class对象。3、类的初始化 ()类的加载大多数情况下是1、2、3一原创 2020-08-02 11:00:41 · 258 阅读 · 0 评论 -
Java 笔记 23:序列化,网络,TCP群聊,UDP
Java 笔记 23序列化序列化1、java.io.Serializable接口: 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。如果实现Serializable接口,对象如何序列化,各个属性序列化的顺序是什么,都是默认的,程序员无法指定,也不用关心。如果属性前面有static和transient修饰,不原创 2020-07-31 19:50:07 · 305 阅读 · 0 评论 -
Java 笔记 22:java.io.File,序列化
Java 笔记 22java.io.File:类文件和目录 路径名的抽象表示形式。通俗的讲:File类的对象代表一个文件或一个目录(文件夹)1、路径的分隔符:windows:\ 和 /其他平台:/网络地址:http://www.baidu.com/index.html现在写路径分隔符:(1)/(2)File.separator public void test01(){ File ioBJ1 = new File("D:\\尚硅谷_190513班_柴林燕_JavaSE\\原创 2020-07-30 15:42:36 · 261 阅读 · 0 评论 -
Java 笔记 21:modcount, 泛型
@TOCmodcountmodCount:记录当前集合被修改的次数(1)添加(2)删除这两个操作都会影响元素的个数。当我们使用迭代器或foreach遍历时,如果你在foreach遍历时,自动调用迭代器的迭代方法,此时在遍历过程中调用了集合的add,remove方法时,modCount就会改变,而迭代器记录的modCount是开始迭代之前的,如果两个不一致,就会报异常,说明有两个线路(线程)同时操作集合。这种操作有风险,为了保证结果的正确性,避免这样的情况发生,一旦发现modCount原创 2020-07-29 19:58:24 · 187 阅读 · 0 评论 -
Java 笔记 20:List,Vector源码(没看完),说现在先不用看源码。
Java 笔记 20Vector源码跟踪:(1)new Vector():初始化长度为10的数组,默认增量是0(2)add(E e):默认扩容为原来的2倍如果你手动指定了capacityIncrement的值,那么可以按照你指定增量进行扩容。(3)add(index,e):①考虑扩容②移动元素③添加元素④元素个数增加(4)remove(index):①计算要移动元素的个数②如果需要移动,调用System.arraycopy方法进行移动③elementData[–elementC原创 2020-07-28 17:27:59 · 87 阅读 · 0 评论 -
Java 笔记 20+21:Collection,Map
@TOCList*一、 List接口的实现类们:1、Vector:动态数组物理结构:数组2、ArrayList:动态数组物理结构:数组3、Stack:栈,它是Vector的子类物理结构:数组4、LinkedList:双向链表物理结构:链表二、Vector和ArrayList的区别?(同时也是面试题)Vector:最早版本的动态数组(旧版),线程安全的(有线程同步的),不够后扩容为原来的2倍,初始容量:10, Vector支持的遍历集合的方式有:(1)foreach(2)Ite原创 2020-07-28 11:06:50 · 175 阅读 · 0 评论 -
Java 笔记 20:List,linkedlist 源码
@public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; /** * Pointer to first node. * Invariant: (first ==原创 2020-07-28 10:12:54 · 87 阅读 · 0 评论 -
Java 笔记 20:List,Arraylist 源码
Java 笔记 20ArrayList源码分析Collection是根接口,没有提供任何直接实现的。它有一些更具体的子接口,例如:List和Set。一、List:列表,接口1、List系列的集合:有序的、可重复的2、List系列的集合:ArrayList(动态数组)、Vector(动态数组,向量类)、 LinkedList(双向链表、双端队列、栈..)、Stack(栈)3、List的APIList接口比Collection接口多了一堆方法:下面列举的方法是比Collection接口原创 2020-07-26 23:19:25 · 93 阅读 · 0 评论 -
Java 笔记 19:Collection,迭代器
Collection数据结构,容器:用来装对象…,等各种管理对象的容器。容器有相同的操作标准:(1)增(2)删(3)改(4)查…Java给这些集合抽取两大接口:1、Collection: 规范单值集合的接口,obj --》单身party2、Map 规范对值集合的接口,(key,value) -->情侣party一、Collection1、Collection:接口(1)它是根接口(2)它没有直接的实现类,有更具体的子接口:List和Set…原创 2020-07-26 10:13:30 · 91 阅读 · 0 评论 -
Java 笔记 17:JavaSE:多线程基础,单例设计模式(重要)
Java 笔记 17JavaSE:多线程基础线程的生命周期线程安全问题死锁生产者,消费者问题单例设计模式(重要)JavaSE:多线程基础多线程相关知识的课程安排:1、JavaSE:多线程基础2、后面:多线程高级 juc多线程相关的一些概念:(了解)程序:当你要完成某个/些任务,功能时,选择一种编程语言而编写的一组指令的集合。软件:软件 = 程序 + 程序运行所需要的一些资源文件。一个软件中可能会有很多个程序构成。进程:程序的一次运行。每个进程之间是独立。操作系统在分配资源(例原创 2020-07-25 21:59:57 · 1123 阅读 · 0 评论 -
Java 笔记 15:异常
Java 笔记 15异常try...catchfinallyThrowsThrow自定义异常异常异常:不正常在某些情况下,因为用户的一些原因,例如:配置问题、错误输入的问题、用户磁盘空间满了等因素,导致程序无法正常运行。不是异常:(1)语法错误(2)逻辑错误Java的程序如果出现异常,并且在代码中,没有做相应的处理,那么程序会“崩溃”,“挂了”Java如何处理异常?或Java异常处理的过程?(1)当程序运行到某一句时,发生了异常,那么程序会先停下来(2)程序会在这句代码处,查看原因原创 2020-07-25 10:35:34 · 279 阅读 · 0 评论 -
Java 笔记 14:成员内部类,枚举,注解(没弄明白),静态导入
Java 笔记 14成员内部类二、静态内部类三、非静态的成员内部类一道难题,很绕四、局部内部类(最少使用的一种,几乎见不着)枚举注解注解静态导入成员内部类类的成员:1、属性:成员变量2、方法:成员方法3、构造器4、代码块5、内部类:成员内部类其中1、2是代表这类事物的特征其中3、4是初始化类和对象用的其中5协助完成2的功能的实现,表现什么情况下会用到成员内部类(方法外声明的)?当描述一个事物时,发现它的内部还有一个完整的结构需要用一个类来描述;并且发现这内部的结构,如果独立存原创 2020-07-24 20:42:31 · 423 阅读 · 0 评论 -
Java 笔记 13:接口,java.util.Comparator,java.lang.Comparable,JDK1.8 接口新特性,内部类
Java 笔记 13接口接口接口的思想,一开始不好理解。但是语法很简单。*1、接口行为标准生活中:例如:USB接口有了标准,(1)电脑设计时简单了,多提供几个USB接口,就可以让很多的设备和我电脑连接(2)对于其他设备的厂商也简单了,只要你这个设备有与电脑连接的需求,那么就可以把连接口设计为USB例如:电源接口有了标准:(1)插座的设计(2)电器的设计Java中:为了限定某些类(这些类之间可能没有继承关系,甚至都不是一个派系里面的),但是这些类都具有相同的行为特征。原创 2020-07-23 22:02:55 · 327 阅读 · 0 评论 -
Java 笔记 12:抽象类,模板设计模式,object,object四种常用方法
Java 笔记 12抽象类模板设计模式java.lang.ObjecttoString()getClass()protected void finalize()hashCode(), equals(Object obj)抽象类面试题:1、面向对象的基本特征:封装、继承、多态2、面向对象的特征:封装、继承、多态、抽象抽象:abstract是具体的反义词和模糊,不确定,不清晰有的类似1、什么情况下会用到抽象?当我们在声明一个父类时,某个/些方法的实现不清楚,或者说无法给出具体的实现,要原创 2020-07-23 19:20:37 · 313 阅读 · 0 评论 -
Java 笔记 11:修饰符final,native,static,类和实例的初始化,java.util.Arrays
Java 笔记 11修饰符final修饰符native修饰符static修饰符final学习修饰符时,希望大家问自己问题?(1)修饰符本身的意思(2)它可以修饰什么?(3)它修饰后有什么不同?final:修饰符的一种1、意思:最终的2、final可以修饰:类(外部类、内部类)、变量(成员变量(类变量、实例变量)、局部变量)、方法(静态方法、非静态方法)3、修饰后有什么不同?(1)修饰类:表示这个类不能被继承了,我们可以称它为“太监类”例如:String、System、Math原创 2020-07-22 21:49:55 · 627 阅读 · 0 评论 -
Java 笔记 10:非静态代码块,多态,数据类型转换
Java 笔记 10非静态代码块面向对象的基本特征三:多态一、面向对象的基本特征:二、多态多态的应用数据类型的转换instanceof非静态代码块1、类的成员:(1)属性:成员变量(2)方法:成员方法(3)构造器(4)代码块①非静态代码块②静态代码块:后面讲,和static一起说2、非静态代码块(1)声明的格式:【修饰符】 class 类名{ { 非静态代码块; }}(2)非静态代码块中的代码什么时候执行?①在“每次”创建对象的时候执行②比构造器原创 2020-07-22 21:14:45 · 278 阅读 · 0 评论 -
Java 笔记 9:包,eclipse,this,继承
Java 笔记 9包如何声明包如何使用其他包的类Eclipse快捷键this面向对象基本特征二:继承方法的重写:Overridesuper包包的作用:1.避免类的重名问题有了包以后,类的名称就比较长了,类的全名称就变成了:包.类名回忆:java.util.Scanner: Scanner类的全名称java.lang.String: String类的全名称2分类组织管理众多的类java.io:和IO(输入输出)有关java.util:和各种常用工具类有关3用于访问权限控制如果某个类或某原创 2020-07-22 17:42:11 · 264 阅读 · 0 评论 -
Java 笔记 8:重载,参数,构造器
Java 笔记 8方法的参数传递机制:方法的重载命令行参数(了解)可变参数局部变量封装构造器方法的参数传递机制:实参-->形参(1)形参是基本数据类型实参赋值给形参的是数据值,形参值的修改不影响实参,因为实参是“copy,复制”了一份数据值给形参(2)形参是引用数据类型 实参赋值给形参的是对象的地址值,如果形参修改了对象的属性值,那么实参对象的属性值也会修改。陷阱:当形参是引用数据类型,实参给形参地址值之后,形参修改了地址值,那么和实参就无关了方法的重载在同一个类中,出现了原创 2020-07-21 21:32:38 · 181 阅读 · 0 评论 -
Java 笔记 7:面向对象
Java 笔记 7面向对象的编程思想:面向过程的编程思想:面向对象的学习围绕几条主线:类与对象:类:一类具有相同特性的事物的抽象描述类的第一类成员:属性类的成员之二:方法面向对象的编程思想:思想:非常高度概括的思想和行为的准则编程思想:指引我们编程(开发/写代码)的原则面向过程的编程思想:经典代表:C语言程序的最小单位是函数。一个函数代表一个功能程序员关注的角度:把大的功能分解为一个一个小的功能。只关注怎么做。面向过程是把数据与功能分开的。面向对象的编程思想:经典代表:Java语言原创 2020-07-21 14:51:47 · 218 阅读 · 0 评论 -
Java 笔记 6:二维数组
Java 笔记 6二维数组二维数组原创 2020-07-21 11:34:57 · 102 阅读 · 0 评论 -
Java 笔记 5:数组
Java 笔记 5数组(array)数组的存储数组(array)简单的说,就是一组数当一组数据的数据类型,意义是一样的时候,那么为了方便的统一的管理它们,我们需要用新的数据的存储结构来进行存储。例如:数组所谓数组(Array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数组的长度(l原创 2020-07-21 11:06:57 · 150 阅读 · 0 评论 -
Java 笔记 4
Java 笔记 4产生随机数的第二种方式产生随机数的第二种方式public static void main(String[] args){ //(1)先准备产生随机数的工具 java.util.Random tools = new java.util.Random(); //(2)用工具获取随机数 int num = tools.nextInt(); System.out.println("随机整数:" + num) ; double d = tools.nextD原创 2020-07-21 10:39:44 · 77 阅读 · 0 评论 -
Java 笔记 3:顺序结构,分支结构
Java 笔记 3流程控制语句结构一、顺序结构二、分支结构流程控制语句结构值:数据变量:用来保存/存储值表达式:用来计算的语句:可以独立执行的,并且是要完成一件事情的。不是所有的表达式直接加;就可以构成语句的。流程控制语句结构:1、顺序结构(每一步都要走,而且从上往下顺着走)2、分支结构(选择其中一个分支运行)3、循环结构(重复执行某些语句)一、顺序结构整个程序总体来说都是顺序执行的,从main()主方法开始,顺序往下走比较有代表性:输入和输出1、输出语句System.ou原创 2020-07-21 10:26:05 · 383 阅读 · 0 评论 -
Java 笔记 2: 进制,运算符,交换变量值的三种方法
Java 笔记 2进制进制的分类在程序中如何表示某个数字是十进制、二进制、八进制、十六进制为什么byte类型的范围是-128~127?浮点型的float和double在底层如何存储?基本数据类型之间的转换:运算符运算符:运算符:(了解)交换两个变量值的三种方法进制进制的分类十进制:数字范围:0-9进位规则:逢十进一二进制:数字范围:0-1进位规则:逢二进一八进制:数字范围:0-7进位规则:逢八进一十六进制:数字范围:0-9、A-F(或者a-f)进位规则:逢十六进一 十进制 二进原创 2020-07-20 21:02:13 · 226 阅读 · 0 评论 -
Java 笔记 1:环境搭建,乱码问题,大小写问题,格式问题,源文件名和类名的问题
Java 笔记 1Java历史Java的特点Java语言运行机制:跨平台跨平台性原理Java程序开发和运行的步骤:开发环境搭建环境变量问题1:乱码问题问题2:大小写问题问题3:格式问题问题4:源文件名和类名的问题Java历史1、诞生于SUN(Standford University Network)2、大概于1996年发布正式的第一版3、Java之父:詹姆斯.高斯林4、2009年SUN被Oracle(甲骨文)收购5、目前学习(开发)的版本是Java86、最新版本:Java127、Java分为原创 2020-07-20 15:58:53 · 602 阅读 · 0 评论