Java笔记基础篇
文章平均质量分 51
javaSE部分的笔记
一只可爱的小狐狸
我亦无他,惟手熟尔
展开
-
什么是 CAS
CAS:CAS(Compare And Swap/Set)比较并交换,CAS 算法的过程是这样:它包含 3 个参数CAS(V,E,N)。V 表示要更新的变量(内存值),E 表示预期值(旧的),N 表示新值。当且仅当 V 值等于 E 值时,才会将 V 的值设为 N,如果 V 值和 E 值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS 返回当前 V 的真实值。CAS 操作是抱着乐观的态度进行的(乐观锁),它总是认为自己可以成功完成操作。当多个线程同时使用 CAS 操作一个变量时,只有一原创 2021-08-09 09:20:46 · 209 阅读 · 0 评论 -
JAVA锁机制
1.乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。2.悲观锁悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次原创 2021-07-25 21:18:18 · 716 阅读 · 3 评论 -
JAVA 四种引用类型
强引用在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存泄漏的主要原因之一。软引用软引用需要用 SoftReference 类来实现,对于只有软引用的对象来说,当系统内存足够时它不会被回收,当系统内存空间不足时它会被回收。软引用通常用在对内存敏感的程序中。弱引用弱引用需要用 WeakReferen原创 2021-07-25 20:58:18 · 242 阅读 · 2 评论 -
网络编程
网络编程1.软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等2.网络通信协议网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传原创 2021-03-29 10:20:02 · 175 阅读 · 0 评论 -
反射机制
反射机制反射机制是什么1.反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;2.对于任意一个对象,都能够调用它的任意一个方法和属性;3.这种动态获取的信息以及动态调用对象的方法的功能就是反射机制;4.也就是说通过反射机制,我们可以获取想要获取到的东西,对前面所学到的范围限定词的限制就可以打破约束反射机制的作用1.在运行时判断任意一个对象所属的类;2.在运行时构造任意一个类的对象;3.在运行时判断任意一个类所具有的成员变量和方法;4.在运行时调用任意一个对象的方法;原创 2021-03-07 21:23:43 · 16930 阅读 · 19 评论 -
三种设计模式
设计模式软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。1.单例模式意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。单例模式有多种写法,常见的是懒汉模式和饿汉模式 饿汉单例模式饿汉单例模式优点:没有加锁,执行效率会提高缺点:类加载时就初始化,浪费内存编程实现:私有构造器静态的私有属性公共的静态方法原创 2021-01-26 13:20:30 · 1325 阅读 · 0 评论 -
java异常机制
异常机制异常分类:1.Error及其子类:错误,一般指的是虚拟机的错误,是由Java虚拟机生成并抛出,程序不能进行处理所以也不加 处理,2.RuntimeException及其子类:运行时异常(非受检型异常),是由于编程bug所导致,希望越早发现越好,所以 不进行处理,直接中断报错即可,编程人员针对报错信息修改程序bug来解决问题。3.Exception及其子类中除了RuntimeException及其子类之外的其它异常:受检型异常(非运行时异常),这类异常 属于明知道可能出现,但是没有办法杜绝的异原创 2021-01-25 13:13:47 · 1229 阅读 · 0 评论 -
内部类
内部类一个类或者接口定义在另外一个类或者接口的内部内部类之外的类称为外部类内部类的名称必须区别于它所在的外部类,和其它类之间没有要求内部类可以访问其外部类的所有变量和方法外部类不能直接访问内部类的实现细节,可以通过创建内部类对象的方式直接访问,不受限定词的影响内部类比外部类多了private/protected/static三个修饰符,这三个修饰符不能用在外部类上非静态内部类不能拥有静态成员,静态内部类则没有这个限制内部类分类1.非静态内部类2.静态内部类3.局部内部类4.匿名内部类原创 2021-01-24 18:51:31 · 1218 阅读 · 0 评论 -
接口
接口1.可以用于 规范实现接口的类中必须实现接口中抽象方法,接口可以理解为一种契约2.使用关键字interface定义接口3.一个类只能有一个直系双亲类,一个类可以实现多个接口,一个接口可以继承多个接口接口的特点1.抽象类中的抽象方法不能省略abstract关键字,但是接口中的方法声明可以添加abstract,也可以不写2.接口不能直接使用,必须有对应的实现类3.通过接口定义变量,使用具体类的实例,进行调用4.没有构造器方法,不能定义静态或者非静态代码块5.没有属性,只能定义常量(默认为p原创 2021-01-23 11:56:36 · 4417 阅读 · 6 评论 -
方法的重写和重载
方法的重写和重载方法的重写(覆盖)要求:方法的名称一致方法的重写(覆盖)一定发生在父子类之间执行规则:new谁运行谁的方法,和声明的类型无关,由具体创建对象的类型决定方法的覆盖定义要求方法名称一致子类中方法范围要求大于等于父类中的方法范围,不允许private 返回类型一致,子类方法可以小于等于父类 类型,例如父类Number,子类Integer 参数类型一致方法的参数一致(个数、类型、顺序),和参数名称无关返回数据类型一致【面试】(因为如果返回类型不一致,则无法进行语法检查,例如父类返回原创 2021-01-17 12:19:55 · 1529 阅读 · 5 评论 -
关键字 final、this、super、static
final:意思是终的、不可变的final可以修饰方法、属性、类型,在修饰方法的时候父类的方法只能被子类调用而不可以重写,修饰属性的时候需要赋值,或者在构造方法中对final所修饰的属性进行赋值,因为父类中的构造方法一定会执行的,所以可以在构造方法中对final修饰的属性赋值,一旦赋值则不可以改变。final修饰类的时候不允许被继承,因为final意为最终的最后的不可变的,而继承是extends是可扩展的可延伸的,所以说在final修饰的类中不允许被继承,他类中的属性是不可变的!!!!属性上可以声明的同原创 2021-01-16 09:40:59 · 1378 阅读 · 1 评论 -
面向对象的小练习题(一)
1猜数字游戏一个类A有一个成员变量v。定义一个类对A类的成员变量v进行猜。如果大了则提示大了小了则提示 小了。等于则提示猜测成功。解法一:import java.util.Random;import java.util.Scanner;public class A { private Integer vv = 0; public A() { Random r = new Random(); vv = r.nextInt(1000); } public String guess (I原创 2021-01-13 13:13:17 · 1540 阅读 · 1 评论 -
compareTo的用法
compareTo的用法使用Integer实例的compareTo方法来比较两个Integer的值,如果返回值为0 说明两个数相等如果返回值为1 说明第一个数大于第二个数如果返回值为-1 说明第一个值小于第二个数private static void compares(Integer i, Integer j) {System.out.println(i.compareTo(j));if(i.compareTo(j) == 0 ){System.out.println(“两个数相等”)原创 2021-01-12 19:22:08 · 4925 阅读 · 0 评论 -
String长度分析?
String长度的分析?String的长度一旦定义便成为不可改变,貌似对其大小进行改变时,实际上是在底层重新开辟了一个空间,然后与之前变量名一样,也就是说现在的String对之前的String进行了替换,并不是本质意义上的改变。String底层是用final修饰的char类型的数组实现的,他是不可变的,他不是简单类型的,但是他有没有大小!他最多有多少字符? 一般来说是用 域count来记录对象字符的数量,因为count的类型是int类型,显然的会认为:String的最大长度是2^31 也就是4G,实际原创 2021-01-11 19:08:23 · 1643 阅读 · 3 评论 -
二维数组和稀疏数组的相互转化
二维数组和稀疏数组的相互转化当一个数组中的大部分元素为0,或者为同一个值时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是:(1)记录数组一共有几行几列,有多少个不同的值(2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模二维数组转稀疏数组的思路:1.遍历原始的二维数组,得到有效数据的个数 sum2.根据sum就可以创建稀疏数组sparseArray [sum+1] [ 3 ]int3.将二维数组的有效数据存入到稀疏数组中public class SpareA原创 2020-11-28 22:51:33 · 1322 阅读 · 1 评论 -
字符串如何去重呢?
如何对字符串去重?1.可以利用String中的方法去重import java.util.Scanner;加粗样式public class Main4 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();System.out.println(removeRepetition(str));}public static String removeR原创 2020-11-25 22:29:58 · 2345 阅读 · 0 评论 -
面向对象篇
面相对象封装封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。封装是一种将代码与其处理的数据结合起来,而不被外界干扰和滥用的程序设计机制。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。既可以实现对客体属性的保护作用,又可以提高软件系统的可维护性只要用户接口不改变,任何封装体内部的改变都不会对软件系统的其他部分造成影响封装隐藏实现细节,并对外提供了公共的访问方式调用对象时是无需了解其中的细节,只需要知道调用方法接口、原创 2020-11-21 20:51:16 · 1299 阅读 · 1 评论 -
数组实现储表格数据
数组实现储表格数据1.建立一个多个唯Object类的一唯数组,由于object类是所有类型的父类,所以这个数组可以存放数字,字符串.再将这多个一唯数组当做元素放入一个新的一维数组即可.package cutestFox.io03;import java.util.Arrays;import java.util.Scanner;public class Main1 { public static void main(String[] args) { Object[] array1 = {原创 2020-11-17 20:52:20 · 1556 阅读 · 2 评论 -
数组的拷贝和java.util.Arrays 类
数组的拷贝和java.util.Arrays 类数组的拷贝System 类里也包含了一个 static void arraycopy(object src,int srcpos,object dest, int destpos,int length)方法,该方法可以将 src 数组里的元素值赋给 dest 数组 的元素,其中 srcpos 指定从 src 数组的第几个元素开始赋值,length 参数指定将 src 数组 的多少个元素赋给 dest 数组的元素package text;public原创 2020-11-11 22:00:12 · 1304 阅读 · 2 评论 -
对数组的初步学习
数组数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它,属于复杂数据类型.Java数组是固定的不能扩展数组是存放在堆中的,所以在声明数组时,需要定义数组的长度,即在堆中开辟出一个空间【数组的长度一旦声明,不能修改;如果需要修改则需要自行编程实现,这里实际是新创建一个数组,长度是修改后的长度,也就是说替换之前的数组】数组的声明格式:(1.)类型[] 变量名(2.)类型 变量名 []数组的赋值:(1.)动态赋值过程:真正的含义是需要先去申原创 2020-11-07 20:19:55 · 1341 阅读 · 0 评论 -
控制语句的学习
控制语句结构化编程结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。应用代码一般是由三种结构组成:顺序结构、选择结构、循环结构指导思想自顶向下、逐步求精、模块化编程过程流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。常见的绘制工具有Vis原创 2020-11-03 19:09:17 · 1275 阅读 · 0 评论 -
变量和标识符
变量和标识符*2.1注释在 Java 中根据注释的功能不同,主要分为单行注释、多行注释和文档注释。 单行注释单行注释使用“//”开头,“//”后面的单行内容均为注释。 多行注释多行注释以“/”开头以“/”结尾,在“/”和“/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。 文档注释文档注释以“/*”开头以“/”结尾注释在代码编译时会自 动被编译器所忽略2.2标识符标识符可从一个字母(Unicode编码字符集(65536)、下划线原创 2020-11-01 20:37:45 · 4320 阅读 · 0 评论 -
Math中部分方法
Java提供了一个工具类Math,其中包含一个abs()的方法实现求绝对值内部实现是通过StrictMath实现的,其中通过对等类提供计算实现Math.sqrt() : 计算平方根Math.abs() : 取绝对值Math.ceil(): 天花板的意思,就是逢余进一Math.floor() : 地板的意思,就是逢余舍一Math.round(): 四舍五入,float时返回int值,double时返回long值package cutestFox01;public class Test007原创 2020-11-01 20:33:32 · 1272 阅读 · 2 评论 -
最常用的Dos命令
cd 目录路径 进入一个目录cd… 进入父目录dir 查看本目录下的文件和子目录列表cls 清除屏幕命令上下键 查找敲过的命令Tab键 自动补齐命令...原创 2020-10-14 17:07:48 · 1141 阅读 · 0 评论 -
就=与==的问题
一个=是用于赋值,表示将=右边的数据计算出来,并存放在左边的变量中。如果需要判断两个数据是否相等,应该使用==两个等号,不是一个原创 2020-05-12 09:02:53 · 1138 阅读 · 0 评论 -
浮点数无法准确存放,在进行等 值判断的时候如何解决?
举例说明:public class T1 {public static void main(String[] args) { double x1 = 0.1; x1=x1+x1+x1+x1+x1+x1+x1+x1+x1+x1; System.out.println(x1); }}在这里输出结果并不是1而是 0.99999999因为浮点数无法精确存放,所以会有一定的精度损...原创 2020-04-21 12:12:29 · 1248 阅读 · 0 评论 -
UML和类图
UML统一建模语言是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML使用面向对象设计的的建模工具,但独立于任何具体程序设计语言。UML主要有以下作用:为软件系统建立可视化模型为软件系统建立构件为软件系统建立文档UML系统开发中有三个主要的模型:功能模型:从用户的角度展示系统的功能,包括用例图对象模型:采用对象,属性,操作,关联等...原创 2020-03-26 11:09:57 · 1177 阅读 · 0 评论 -
关于限定词
范围限定词: 不被外界干扰和滥用的程序设计机制,封装隐藏实现细节用于约束访问,主要用在方法和属性的定义上,用于限制针对方法和属性的访问。在Java中可以使用限制有4种:private 私有的、protected 受保护的、默认(就是没有限定词)、public 公共的class上的限定词定义类的方法实际上有2种,一种定义在另外一个类的内部(内部类),还有一种是外部类定义类时可以使用限定词,例如...原创 2020-03-26 10:54:02 · 1336 阅读 · 0 评论 -
java.Math类方法
java.lang.Math类方法1.Math.max 求两数中最大/Math.min 求两数中最小package Test0228;public class Test007 {public static void main(String[] args) { double x=12.45,y=52.4; System.out.println(Math.max(x, y)); System...原创 2020-03-10 15:21:15 · 1163 阅读 · 0 评论 -
Radom类随机生成
Random类Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机数计算时,随机算法的起源数字【参数】称为种子数seed,在种子数的基础上进行一定的变换,从而产生需要的随机数字创建随机对象new Random()构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象new Random(long seed)构造方法可以通过制定...原创 2020-03-10 15:07:05 · 1369 阅读 · 0 评论 -
字符串中的查找
字符串中子串的查找int indexOf(String str)从左向右开始查找str的起始下标,如果查找不到返回-1int indexOf(String str, int fromIndex)从指定下标位置fromInde开始左向右查找str的下标int lastIndexOf(String str)从右向左开始查找str的起始下标int lastIndexOf(String str...原创 2020-03-10 15:00:36 · 1224 阅读 · 0 评论 -
java是一种结构化编程
一、结构化程式设计(英语:Structured programming)是 1960 年代开始发展起来的一种编程典范。它采用子程序、 程式码区块、for 循环以及 while 循环等结构来取代传统的 goto。希望借此来改善计算机程序的明晰性、品质以 及开发时间,并且避免写出面条式代码。已经证明,任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本...原创 2020-03-01 19:24:14 · 2057 阅读 · 0 评论 -
java中常量、表达式
1.复合数据类型—抽象数据类型,用户自定义的数据类型复合数据类型包括:class类、interface接口、数组。null 索引在运行时并没有对应的类型,但它可以被转换为任何类型(不能是简单类型)。索引类型的默认值就是null强调:赋值时接收数据的变量和给的值必须类型一致,否则编译报错2.常量final常量就是指在程序执行期间其值不能发生变化的数据【一旦赋值则值不变】,常量是固定的。如整型...原创 2020-03-01 18:48:32 · 2201 阅读 · 0 评论 -
进制数及其基本数据类型的转换
整数1.二进制整数,以0b或者0B开头,例如0b10010012.十进制整数。如123,-456,0 3.八进制整数。以0开头,如0123表示十进制数83,-011表示十进制数-9。4.十六进制整数。以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18浮点数1.由数字和小数点组成,且必须有小数点,如0.123, 1.23, 123.0(十进制数)2.科学计数...原创 2020-03-01 18:27:07 · 2137 阅读 · 0 评论 -
Java语言命名要求
1.Java 标识符: ---- 一定要遵守最基本的编程规范,目前讲解的规范按照SUN并参考ali的规范进行定义,入职后记得就近原则2.给编程中的要素进行命名的规则,赋予变量、类或方法的名称。变量、函数、类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符标识符可从一个字母(Unicode编码字符集)、下划线_或美元符号开始,随后也可跟数字、字母、下划线或美元符号(Unicode编...原创 2020-03-01 17:59:34 · 1243 阅读 · 0 评论 -
Java的三种核心机制
1.Java虚拟机(Java Virtual Machine) 虚拟机就是在真实机器中用软件模拟实现的一种虚拟机器。Java虚拟机代码被存储在.class文件中;每个文件都包含最多一个public类2.垃圾收集机制(Garbage Collection) Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线...原创 2020-03-01 17:40:42 · 3121 阅读 · 0 评论 -
java中的主要技术分支
一、JavaSE:1.Java标准版,适合于开发桌面系统和低端商务应用系统2.前身J2SE,2005年之后更名JavaSE 3.语言核心类: 数据库连接, 接口定义,输入/输出和网络编程二、 JavaEE:1.Java企业版,为企业提供电子商务构架及Web服务的解决方案 2.前身J2EE,2005年之后更名 3.包含JAVA SE中所有类,并且还包含用于开发区企业级应用的类...原创 2020-03-01 17:36:15 · 1744 阅读 · 0 评论 -
什么是java?以及java的初步简单学习
什么是Java编程List item语言Java编程语言:应用场景:非windows平台下互联网环境的开发首选JDK JRE JVMJDK是Java开发工具箱,包括了JREJRE是Java运行时环境,不包括开发工具JVM是Java虚拟机,执行class文件开发环境的准备JDK安装: JDK1.8Eclipse:IDE工具常见的开发工具:javac编译器 Hello.java—...原创 2020-02-16 20:43:52 · 1489 阅读 · 0 评论 -
java 工具的开发及应用
在真实开发中如果使用文本编辑工具进行开发,基本上是不可能的,原因是开发效率太低如何提高开发效率?使用IDE,集成开发环境使用IDE工具常见的工具有Eclipse、IDEA、STS/MyEclipseEclipse中的开发步骤:1、File—new --java project构建java项目2、src目录用于存放源代码3、右键点击src–new—class4、IDE工具会根据向导中的设置自...原创 2020-02-16 20:36:16 · 1347 阅读 · 0 评论 -
java学习的基础准备
对于java学习的准备: U盘 工具:—自行下载,上课的时候演示 操作系统: Linux(CentOS)其它系统学习内容: 基础入门: JavaSE8 文件系统、输出输入、线程、集合、网路编程 web应用开发: H5(html5+css+js)、JQuery、Servlet/jsp/MVC --项目 进阶开发: Spring、MyBatis、SpringMVC、SpringBo...原创 2020-02-16 20:31:49 · 1254 阅读 · 0 评论