JAVA学习笔记
文章平均质量分 79
JAVA知识
Candyank
这个作者很懒,什么都没留下…
展开
-
通俗易懂的双亲委派机制
你得先知道在介绍双亲委派机制的时候,不得不提ClassLoader(类加载器)。说ClassLoader之前,我们得先了解下Java的基本知识。Java是运行在Java的虚拟机(JVM)中的,但是它是如何运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class文件给加载到JVM中去执行。JVM中提供了三层的ClassLoader:Bootstrap classLoader:主要负责加载核心的类库(java.转载 2021-04-17 10:04:07 · 94 阅读 · 0 评论 -
next()和hasNext()
public interface Iterator从 Java API 中可以查到迭代器 Iterator的这两个方法:hasNext()用于判断是否还有下一个元素,返回值为true/false;next()用于返回下一个元素。对于Iterator获取下一个元素的步骤是:Iterator it=XXX.iterator(); //先根据一个集合或列创建一个迭代器if(it.hasNext()){ //然后根据迭代器判断是否有转载 2021-04-15 13:22:24 · 330 阅读 · 0 评论 -
什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。Scanner sc = new Scanner(System.in);通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:next() -->hasNext()nextLine() ---->hasNextLine()next方法im原创 2021-04-15 13:19:26 · 104 阅读 · 0 评论 -
多线程
多线程多线程线程创建方式创建方式一:继承Thread类 重写run()方法。 调用start开启线程创建线程方式2 :实现runnable接口, 重写run方法,执行线程需要丢入runnable接口实现类。调用start方法。总结:多个线程同时操作一个对象会产生并发问题:创建线程方式3 :实现Callable接口, 重写run方法,执行线程需要丢入runnable接口实现类。调用start方法。Lambda表达式静态代理:线程的五大状态线程的方法:停止线程:线程休眠:(==sleep不会释放锁==)线程原创 2021-04-12 22:21:40 · 111 阅读 · 0 评论 -
IO流
IO流什么是io通过IO可以完成硬盘文件的读和写。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XxN6iXe-1618199207863)(C:\Users\10913\AppData\Roaming\Typora\typora-user-images\image-20200816223856881.png)]分类按流的方向分:往内存中去,叫做输入(Input)。或者叫做读(Read)。从内存中出来,叫做输出(Output)。或者叫做写(Write)。原创 2021-04-12 14:24:28 · 114 阅读 · 0 评论 -
Java 八大基本数据类型
转载自:http://blog.csdn.net/qq_35101189/article/details/54021473 1. Java的简单类型及其封装器类 Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型f...转载 2021-04-12 11:38:30 · 168 阅读 · 0 评论 -
集合
这里写目录标题集合**List集合特点:**ListArryList迭代器Iterator,,ListIterator(列表迭代器)LinkedListLinkedlist特有方法VectorSet (HashSet和TreeSet)HashSetTreeSet: 遍历时会自动排序(使用二叉树进行比较)自定义类排序:(方法一,类有比较性)自定义类排序:(方法二,写比较类实现Comparator方法)常用小需求例子:泛型概述:集合类泛型的解释好处:总结:单向链表解析Collections工具类方法M原创 2021-04-12 09:31:06 · 101 阅读 · 0 评论 -
常用类
Object类getClass()获取类对象hashCode()返回该对象的哈希码值toString()返回类地址+类名+hashCodeequals()比较两对象地址是否相等finalize()包装类装箱与拆箱包装类在堆。基本数据类型在栈JDK1.5之后,提供自动装箱和拆箱public class Demo01 { public static void main(String[] args) { //类型转换:装箱,基本类型转成引用类型的过程 栈原创 2021-04-11 21:53:39 · 180 阅读 · 0 评论 -
内部类详解
内部类内部类的定义将一个类定义在另一个给类里面或者方法里面,这样的类就被称为内部类。内部类可以分为四种:成员内部类、局部内部类、匿名内部类、静态内部类,下面我们逐一介绍这四种内部类。成员内部类他定义在另一个类中。一般定义格式如下class K{ public void say(){ class J{ } }}因为类C相对与类D在外面,我们且称类C为外部类。成员内部类可以无条件访问外部类的属性和方法,但是外部类想要访转载 2021-04-11 10:02:38 · 115 阅读 · 0 评论 -
java 处理字符串是的转义字符的处理
作为一名java初学者,在遇到关于转义字符处理的时候总会感觉有点复杂,特别是在处理反斜杠“\”的时候,会有点绕弯子,为了避免自己忘了就现在这里做一个记录。废话不多说,先看一个例子。package test; import java.net.URL; import org.junit.Before;import org.junit.Test; public class EscapeCharacterTest { @Befor...转载 2021-03-20 12:19:37 · 4224 阅读 · 0 评论 -
Java学习之类加载全过程_JVM内存分析_反射机制核心原理_常量池理解
一、类加载机制JVM把class文件加载到内存,并对数据进行校验,解析和初始化,最形成JVM可以直接使用的JAVA类型的过程。加载-->链接(-->验证-->准备-->解析)-->初始化-->使用-->卸载1.加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数...转载 2020-08-04 13:11:44 · 108 阅读 · 0 评论 -
通过反射动态的创建对象
public class Test09 { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException { //获得class对象 Class c1 =原创 2020-08-04 11:24:35 · 143 阅读 · 0 评论 -
实体类为什么要实现序列化
java pojo实体类implements serializable接口原因:1、首先要了解HTTPSession才能往下走,因为web项目基本上都是处理一个个请求。每开启一个回话,web服务器就会创建一个HttpSession对象,每个对象都会占用一定的空间(内存),如果同一个时间段内访问的用户太多,就会消耗大量的服务器内存,为了解决这个问题就有session持久化。session持久化:web服务器会把暂时不活动并且没有失效的HttpSession对象转移到数据库或者文件系统中储存,服务器要再用时原创 2020-08-01 17:13:32 · 500 阅读 · 0 评论 -
利用java二维数组打印杨辉三角
利用java二维数组打印杨辉三角题目:思路:步骤:1.设置每一行的第一列和最后一列都是1,每行的数字个数等于该行行数效果:2.从第三行开始,从第二列开始,这个数字等于他上一行的前一列和上一行的本列之和效果:题目:打印杨辉三角形(行数可以键盘录入)11 11 2 11 3 3 11 4 6 4 11 5 10 10 51思路:通过观察发现:1.每一行的第一列和最后一列都是1,每行的数字个数等于该行行数2.从第三行开始,从第二列开始,这个数字等于他上一行的前一列和上一行的本列之和步骤:原创 2020-07-25 11:51:15 · 773 阅读 · 0 评论 -
Java运算符和流程控制总结
一、Java运算符总结:1.算术运算符:①单目:+(取正),-(取负), ++(自增1), - -(自减1);②双目:+ - * / %(取余)(+还可以连接字符串);③三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符...转载 2020-07-24 19:22:08 · 129 阅读 · 0 评论 -
接口的一些知识
接口作用:约束定义一些方法,让不同的人实现~ 一个接口可以被多个类调用,一个类也可以调用多个接口注意事项接口的方法public abstract接口的常量默认都为public static final接口不能被实例化,接口中没有构造方法 .implements 可以实现多个接口如果是普通类实现接口则必须要重写接口中的所有方法如果是抽象类则不需要重写接口的所有方法,由抽象类的子类实现接口的方法...原创 2020-07-24 15:59:02 · 145 阅读 · 0 评论 -
抽象类和抽象方法的知识
抽象类例如:public abstract class Action{}抽象类不能new 只能够靠子类去实现它抽象类中可以写普通方法抽象方法必须在抽象类中继承了抽象类的子类,都必须要实现他的方法,除非它的子类也是抽象类抽象类不能new对象但是也是存在构造器的抽象类的作用举个例子:有两类鸭子,第一类是家养的鸭子,不会飞行,会嘎嘎的叫,第二类是野鸭子,会飞行,也会嘎嘎的叫;我们可以定义一个抽象类,里面有两个抽象方法public abstract void quack(){}原创 2020-07-24 15:56:53 · 145 阅读 · 0 评论 -
父类与子类的强制转换
父类转子类假设Person类为父类,Student类为子类,子类方法为go(),此时父类实例化子类对象想调用子类方法是无法直接调用的,需要强制转换为子类方法如下:子类转父类> 子类转换父类:可能会丢失自己本来的方法假设Person类为父类,Student类为子类,子类方法为go(),此时子类类实例化对象想转换为父类,则转换后则无法调用go()方法示例如下:...原创 2020-07-24 15:51:26 · 2104 阅读 · 0 评论 -
Java类实现某个接口后,是否需要实现接口中的所有方法?
1.结论 并不是所有的类实现接口后都必须实现接口的所有方法!2.特殊情况 当Java抽象类实现某个接口后没必要实现所有的方法。3.注意点 当Java普通类实现接口后必须实现接口中的所有方法。4.原因为什么抽象类不需要实现所有方法? &...转载 2020-07-24 15:27:41 · 2115 阅读 · 0 评论 -
Java权限修饰符private、default(一般省略)、public、protected权限表格速记
修饰符本类同一个包的类继承类其他类private√×××无(默认)√√××protected√√√×public√√√√原创 2020-07-24 12:55:17 · 312 阅读 · 0 评论 -
JAVA中多态的知识点
多态注意事项父类-->子类强制类型转换方法:注意:注意事项多态是方法的多态,属性没有多态父类和子类是有联系的,,如果没有联系会报类型转换异常! ClassCastException存在条件:继承关系 方法需要重写,,父类引用指向子类对象! Father f1 = new Son();方法的调用:看是哪个类实例化的对象,,如果子类重写了父类的方法,当调用这个方法时,无论是子类还是父类实例化的对象,都会调用子类的这个方法如果是子类独有的方法,则父类实例化的子类对象是无原创 2020-07-24 12:53:09 · 209 阅读 · 0 评论 -
重写的知识点及与重载的区分
重写的知识点注意事项为什么需要重写?IDEA中重写的快捷键不能重写的方法:引申一下重载的东西注意事项需要有继承关系,子类重写父类的方法!方法名必须相同参数列表必须相同修饰符:范围可以扩大: public>protected>Default>private抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException(小)–>Exception(大)重写:子类的方法和父类的必须一致,但方法体不同为什么需要重写?父类的功原创 2020-07-24 12:48:36 · 118 阅读 · 0 评论 -
super和 this的区分
super和 this的区分super的注意点与this区分代表的对象不同:前提:构造方法:super的注意点super调用父类的构造方法,必须在构造方法的第一个。super必须只能出现在子类的方法或者构造方法中(出现在构造方法时默认不会先显示,是隐藏的代码)。super和 this不能同时调用构造方法!(二者都需要在子类的第一行,会发生冲突)与this区分代表的对象不同:this:本身调用的这个对象。super:代表父类对象的引用前提:this:没有继承也可以使用原创 2020-07-24 12:40:15 · 79 阅读 · 0 评论 -
JAVA中继承的小知识点
Java中只有单继承,没有多继承(一个儿子只能有一个爸爸,而一个爸爸可以有多个儿子)IDEA中继承树打开的快捷键Ctrl+H原创 2020-07-24 12:37:12 · 78 阅读 · 0 评论 -
JAVA中的封装知识
封装封装该露的露,该藏的藏封装(数据的隐藏)记住这句话就够了:封装的好处封装该露的露,该藏的藏 我们程序设计要追求“高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了: 属性私有,get/setset中可能会设置安全性的检测封装的好处提高程序的安全性,保护数据隐藏代码的实现细节统一接口系统可维护原创 2020-07-24 12:34:04 · 77 阅读 · 0 评论 -
JAVA程序的运行机制
JAVA程序的运行机制JAVA三大版本JDK,JRE,JVMJAVA的程序运行机制JAVA三大版本JAVA SE:标准版(桌面程序,控制台开发…)JAVA ME:嵌入式开发(手机,小家电…)(基本已放弃)JAVA EE:E企业级开发(web端,服务器开发…)以上为现今JAVA三个方向,其中想从事JAVA行业的一定要打牢JAVA SE基础,JAVA EE为最终目标JDK,JRE,JVMJDK:JAVA开发者工具JRE:JAVA运行时环境JVM:JAVA虚拟机其中JDK包含原创 2020-07-24 09:36:10 · 86 阅读 · 0 评论 -
Java创建对象内存分析
Java创建对象内存分析java示例代码运行结果内存分析图解java示例代码Pet类:public class Pet { String name; int age; //无参构造方法 public Pet() { } public void shout(){ System.out.println("叫了一声"); }}测试类Application:public class Application { publi原创 2020-07-23 20:47:58 · 151 阅读 · 0 评论 -
java编写稀疏数组及其一些理解
稀疏数组及一些理解稀疏数组的介绍稀疏数组的处理方式举例代码编写运行效果:稀疏数组直观查看稀疏数组的介绍当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组0行0列表示数组行数0行1列表示数组列数0行2列表示有多少个非0数第1行以后的则表示某行某列的数为某值稀疏数组的处理方式记录数组一共有几行几列,有多少个不同值。把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模举例代码编写public class ArraysDemo08稀疏原创 2020-07-23 15:05:14 · 127 阅读 · 0 评论 -
数组声明并创建时的内存分析图解
步骤(简单举例)①.声明数组②.创建数组③.给数组元素赋值nums[0] = 1;nums[1] = 2;nums[2] = 3;nums[3] = 4;nums[4] = 5;nums[5] = 6;nums[6] = 7;nums[7] = 8;nums[8] = 9;nums[9] = 10;原创 2020-07-22 22:02:02 · 135 阅读 · 0 评论 -
利用java语言实现不带界面的简单的计算器小程序
如何使用Java语言以面向对象的思想去实现这样的一个简单的计算器呢?做法如下所示:代码:import java.util.Scanner;public class 计算器 { public static void main(String[] args) { System.out.print("请输出第一个数:"); Scanner scanner = new Scanner(System.in); String x = scanner.ne原创 2020-07-22 20:11:05 · 808 阅读 · 0 评论 -
JAVA方法重载和重写的特征
转载于:https://blog.51cto.com/12306609/2137181转载 2020-07-22 15:37:20 · 1146 阅读 · 0 评论 -
Java中值传递和引用传递的问题
值传递参考以下视频即可:很详细值传递视频引用传递参考以下视频即可:很详细引用传递的视频值传递视频来源于B站JAVA源老师主页:https://space.bilibili.com/549810113?spm_id_from=333.788.b_765f7570696e666f.1引用传递视频来源于B站老九学堂主页:https://space.bilibili.com/99182998?spm_id_from=333.788.b_765f7570696e666f.1...原创 2020-07-22 15:14:55 · 91 阅读 · 0 评论 -
break和continue的区别
break和continue的区别break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在 switch语句中使用)continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。举例如下:public class ContinueDemo { public static void main(String[] args) { in原创 2020-07-22 13:04:35 · 147 阅读 · 0 评论 -
变量的命名规范
变量的命名规范所有变量、方法、类名:见名知意类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母大写 lastName局部变量:首字母小写和驼峰原则常量:大写字母和下划线:MAX_VALUE类名:首字母大写和驼峰原则:Man, GoodMan方法名:首字母小写和驼峰原则:run(), runRun()...原创 2020-07-22 12:45:09 · 123 阅读 · 0 评论 -
如何在IntelliJ IDEA中生成JavaDoc帮助文档
步骤参考首先我们需要在桌面上新建一个文件夹用于存放JavaDoc的文件接下来点击IntelliJIDEA顶部的Tools菜单,选择GenerateJavaDoc选项然后在弹出的界面中我们点击Outputdirectory输入框后面的按钮在弹出的选择文件夹界面中选择刚才新建的文件夹接下来在底部的Locale输入框配置语言和编码集,,语言用zh_CN,代表中文然后点击确定以后我们就等待IntelliJIDEA给我们生成JavaDoc文档即可,等到输出栏出现的提示代表生成完毕原创 2020-07-21 17:50:53 · 791 阅读 · 0 评论 -
运算符的使用
算术运算符包括 + - * / % ++ –public class Demo01 { public static void main(String[] args) { //二元运算符 //Ctrl+D :复制当前行到下一行 int a = 10; int b = 20; int c = 25; int d = 25; System.out.print原创 2020-07-21 16:39:38 · 129 阅读 · 0 评论 -
常用Dos命令梳理
常用Dos命令 盘符切换:直接输入盘符例如: D:# 查看当前目录下的所有文件 dir# 切换盘符目录 cd /d 路径# 返回到上一级 cd.. # 清理屏幕 cls(clear screen)# 退出终端 exit# 查看ip ipconfig#打开应用: calc计算器原创 2020-07-20 17:13:56 · 104 阅读 · 0 评论 -
数据类型扩展
针对数据类型的知识扩展学习public class 数据类型拓展 { public static void main(String[] args) { //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i =10; int i2 = 010; //八进制0 int i3 = 0x10; //十六进制0x 0~9 A~F 16 System.out.printl原创 2020-07-21 10:40:42 · 111 阅读 · 0 评论