![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 70
dandeseed
知足且上进,温柔且坚定
展开
-
java迭代map的四种方式以及迭代器原理
迭代器原理:什么是迭代器,使用迭代器的好处?迭代器就是用来遍历集合中对象的东西,也就是说,对于集合,我们不像对原始数组那样通过直接访问元素来迭代的,而是通过迭代器来遍历对象。这么做的好处是将对于集合类型的遍历行为与被遍历集合对象分离,这样以来,就不需要关心该集合类型的具体实现是怎么样的。只要获取这个集合对象的迭代器便可以遍历这个集合中的对象。而像遍历对象顺序以及怎么访问对象元素这些细节,全部由它自己的迭代器来处理。迭代器怎么实现的?首先集合要先实现iterable接口来表示此对象是可以进行迭代原创 2021-09-02 22:22:54 · 8740 阅读 · 0 评论 -
HashMap遍历的时候使用map.remove会报错
hashmap遍历时用map.remove方法为什么会报错? 发现问题笔者最近在调试项目bug的时候,遇到了一个很奇怪的bug,就是在对hashmap集合进行遍历的时候,同时做了remove操作,这个操作最后导致抛出了java.util.ConcurrentModificationException的错误。带着疑惑,下面参考着源码,分析问题的原因。首先,重现问题,构造一个map并往里面加元素:private static HashM...转载 2021-09-02 10:58:31 · 2465 阅读 · 0 评论 -
Java Native Interface(Java native方法的使用)
1. 安装gcc什么是JNIJNI: Java Native Interface,是一个java调用其他非java代码的接口。JNI是java平台的一部分,通过JNI可以实现java与其他非java编程语言的交互。为什么要用JNIjava在执行一些层次的任务时候,对时间敏感或者需要执行更高效率任务的时候在已经有其他语言实现已完成的功能时,需要java来直接调用。在需要用到java标准平台不具备的依赖与操作系统的特性的时候JNI原理当一个类第一次被调用的时候,这个类的字节码会加载到内存,并原创 2021-08-31 18:09:29 · 242 阅读 · 0 评论 -
Java父类子类中的实例和static的调用顺序
public class Father { static { System.out.println("Father的静态块"); } private static String staticStr = getStaticStr(); private String str = getStr(); { System.out.println("Father的实例块"); } public Father() {原创 2021-08-31 11:24:03 · 241 阅读 · 0 评论 -
正则表达式
正则表达式测试和常用案例编程语言中的正则表达式限定符?表示匹配前面的表达式0次或者1次+ 表示匹配前面的表达式1次或多次* 表示匹配前面的表达式0次或多次修饰限定符非贪婪模式的符号:?特殊字符:注意^在方括号中表示取反,在普通情况下作为定位符使用定位符选择和捕获:千位分隔符的理解正则表达式在ls | grep中的应用注意?号需要加一个转义符相关链接:https://blog.csdn.net/xy010902100449/article/details/5142原创 2021-04-09 16:33:25 · 96 阅读 · 0 评论 -
Java8新特性(Lambda表达式和StreamAPI)
Java8新特性:Lambada表达式不使用labmda表达式:Comparator<Integer> com1 = new Comparator<Integer>(){ @Override public int compare(Interger o1, Integer o2){ return Integer.compare(o1,o2); } };int compare1 = com1.compare(12,2原创 2021-04-03 22:37:39 · 367 阅读 · 1 评论 -
Java之反射机制与动态代理(重要)
反射机制概述反射视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作认一对象的内部属性及方法。加载完类之后在,在堆内存的方法区就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。反射相关的主要API理解Class类并获取Class实例在反射之前,在一个类的外部,不可以通过Pe原创 2021-04-01 14:17:06 · 332 阅读 · 2 评论 -
Java之网络编程(简述)
如果需要网络通信,我们主要有两个主要问题:对应第一个问题:IP和端口号对应问题二:提供网络通信协议:TCP/IP参考模型(应用层、传输层,物理层+数据链路层)IP: 唯一的标识Interet上的计算机(通信实体)在Java中使用INetAddress类表示IPIP分类:IPv4和IPv6; 万维网和局域网域名:www.baidu.com www.mi.com www.sina.cominet = InetAddress.getByName()inet = InetAddress.get.原创 2021-03-26 22:35:26 · 126 阅读 · 0 评论 -
Java之IO流
File类的使用File构造器构造器文件路径参数:File类的获取功能:调用listFiles的话输出的是绝对路径renameTo重命名File的判断功能File类的创建和删除功能:IO流原理及流的分类节点流(文件流)缓冲流转换流打印流数据流对象流随机存取文件流NIO.2中Path、Pahts、Filese类的使用...原创 2021-03-21 16:31:46 · 88 阅读 · 0 评论 -
Java之泛型
为什么要有泛型不使用泛型会出现的问题:在集合中使用泛型泛型不能是基本数据类型 ,需要通道基本类型的话需要拿包装类来替换集合接口或者集合类在jdk5.0之后修改为了带泛型的结构 。在实例化集合类时,可以指明具体的泛型类型。指明完之后,在集合类或接口中凡是定义类或者接口时,内部结构(比如方法、构造器、属性)使用到类的泛型的位置,都指定为实例化时指定的类型。比如add(E e) —> 实例化之后:add(Integer e)如果实例化时没有指明泛型的类型。默认类型为java.lang.O原创 2021-03-20 11:00:03 · 82 阅读 · 0 评论 -
java集合
集合、数组都是对多个数据进行存储操作的结构,简称Java容器。数组在存储多个数据方面的特点:> 一旦初始化之后,其长度就确定了> 数组一旦定义好,其元素的类型也就确定了。我们只能操作指定类型的数据了数组在存储多个数据方面的缺点:> 一旦初始化以后,其长度就不可修改> 数组中提供的方法非常有限,对于添加、删除、插入数据操作,非常不方便,并且效率低下。> 获取数组中有效元素的个数需求,数组没有提供> 数组存储数据的特点:有序、可重复。对于无序,不可重原创 2021-01-23 20:37:18 · 161 阅读 · 1 评论 -
java枚举类和注解
什么是枚举类枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量(可以是对象常量)时,强烈建议使用枚举类如果枚举类中只有一个对象,则可以作为单例模式的实现方式。如何自定义枚举类方式一:jdk5.0之前,自定义枚举类如何使用关键字enum定义枚举类python中的enumerate(list)方式二:jkd5.0之后,可以使用enum关键字来定义枚举类Enum类的主要方法实现接口的枚举类...原创 2021-01-23 14:36:27 · 103 阅读 · 1 评论 -
java常用类
文章目录字符串相关StringStringBufferString Builder日期时间相关System静态方法Date类Calendar类SimpleDateFormat类LocalDate,LocalTime,LocalDateTime,Instant,DateTimeFormatterJava比较器Comparable接口Comparator接口System类Math类BigInteger和BigDecimal字符串相关StringStringBufferString Builder日期时原创 2021-01-21 10:07:52 · 224 阅读 · 2 评论 -
java多线程练习--生产者消费者问题
题目及示例代码package product2;/** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品 * 了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。 * * 分析: * 1.原创 2021-01-20 22:29:59 · 250 阅读 · 0 评论 -
java多线程同步安全问题小练习
多线程练习:package multithreading;// 银行有一个账户// 有两个账户分表向同一个账户存3000元,每次1000,存3次。每次存完打印账户余额public class MultiThreading { public static void main(String[] args) { Account account = new Account(); Thread account1 = new Thread(account);原创 2021-01-20 20:37:02 · 138 阅读 · 2 评论 -
java多线程
程序,进程,线程的基本概念程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行代码,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的区域线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多个线程,就原创 2021-01-16 22:56:33 · 110 阅读 · 0 评论 -
java异常处理
文章目录异常体系结构常见异常举例如何处理异常异常的处理:抓抛模型try-catch-finally的使用异常处理方式二:throws+异常类型开发中如何选择使用try-catch-finally 还是使用throws?手动抛出异常异常体系结构java.lang.Trowable |-----java.lang.Error:一般不编写针对性的代码进行处理 |-----java.lang.Exception:可以进行异常的处理 |-----编译时异常(checked)原创 2021-01-12 22:04:19 · 85 阅读 · 0 评论 -
java之面向对象(下)
static变量使用static修饰属性:称为静态变量(或类变量)实例变量:我们创建的类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性的修改。静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过一个对象修改变量时,其他对象调用此静态变量时,是修改过了的。静态变量随着类的加载而加载。并且加载要早于对象的创建。由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。类变量(静态变量)和实例变原创 2021-01-10 22:27:37 · 362 阅读 · 2 评论 -
Java之面向对象(中)
面向对象的特征二:继承继承的优势(why):减少了代码的冗余,提高了代码的复用性便于功能的扩展为多态的使用,提供了前提继承的格式(what)class A extends B{}A; 子类、派生类、subclassB: 父类、超类、基类、superclass子类A在继承父类B以后,子类A中就获取了B中所有的属性和方法。特别的,父类中声明private的属性或方法,子类继承父类后,仍然认为获取了父类中私有的结构。只是因为封装的影响,使得子类不能直接调用父类的结构。子类继承父类以后,还原创 2021-01-08 23:18:05 · 140 阅读 · 0 评论 -
java四种访问权限private、public、protected、default
修饰词:根据作用范围来进行划分 private默认的(default/friendly)protectedpublic同一个类中可见可见可见可见同一个包中不可见可见可见可见不同的包中有继承关系不可见不可见可见可见不同的包中没有继承关系不可见不可见不可见可见 四种访问权限: 1.public:只能修饰类、方法(含构造方法)、成员变量。其修饰的部分所有人都能访问; 2.默认修饰符default(friendly):只能修饰类、方法(含构造方法)、成员变量。其修饰...转载 2020-10-04 12:06:15 · 917 阅读 · 0 评论 -
java之面向对象(上)
面向对象的两个要素类:对于一类事物的描述,是抽象的、概念上的定义对象,是实际存在的该类事物的每个个体,也称作实例(instance)面向对象的重点是类的设计。设计类就是设计类的成员。类的结构常见类的成员有:属性:类中的成员变量行为:类中的成员方法对象属于引用类型对象和数组一样是引用类型:如果Person p1 = new Person;Person p2 = p1;那么改变p2的属性会直接改变p1和属性。对象的内存解析堆的唯一目的就是存放对象实例,几乎所有的对象实例都在堆这原创 2021-01-07 21:50:34 · 236 阅读 · 0 评论 -
java之数组
数组是有序排列的。数组属于引用数据类型。数组元素既可以是引用数据类型也可以是基本数据类型。创建数组对象会在内存中开辟一整块连续的空间。数组的长度一旦确定不可以更改。数组的初始化int[ ] arr;arr = new int[ ]{1,2,3} //静态初始化int[ ] arr1;arr1 = new int[10]; // 动态初始化数组的默认值整数型: 0浮点型:0.0char型:0或‘\u0000’(显示出来是空格)boolean型:false引用型(Strin.原创 2021-01-06 22:43:26 · 133 阅读 · 0 评论 -
java中的if-else,switch,for和while以及break,continue等要点
if-elseif-else语句需要注意的是{}的问题,if后面如果只有一条执行语句的话是可以省略花括号的,但是建议加上。如果没有花括号的话else会和最近的if相匹配。如:if (a>b) if (a>c) System.out.print(c)else System.out.print(a)此时的else会和第二和if相匹配switchswitch语句需要注意的是break的问题,如果没有break的话,那么case匹配到的之后的语句都会一次执行。sw原创 2021-01-06 20:56:02 · 624 阅读 · 0 评论 -
java运算符
算数运算符注意:取模的话计算结果的符号和被模数是一样的。如-12%5=-2 ; 12%(-5)=2强类型转换比运算符优先。如 (double)12/5 结果是2.4java中变量自增1的话不会改变自身数据类型。如 short s = 1; s++的效果等于s = (short)(s+1)赋值运算符直接赋值=,+=, -=, *=, /+, %=连续赋值int i,j;i = j = 10;或者 int i=1,j=10比较运算符逻辑运算符注意&和&&原创 2021-01-06 10:58:15 · 371 阅读 · 0 评论 -
java关键字与变量
java中的关键字和保留字:关键字保留字:goto ,constjava中的标识符java对各种变量、方法和类等命名时使用的字符序列。(自己起名字的变量名就是标识符)标识符命名规则标识符命名规范java中变量分类:基本数据类型java中定义了8中基本数据类型:数值型:整数类型(byte,short,int,long)和浮点类型(float和double) // 注意long类型需要l或者L结尾,float类型需要f或者F结尾字符型:char //注意java采用u原创 2021-01-05 22:55:01 · 369 阅读 · 2 评论 -
java环境安装和第一个java程序
安装JDK下载链接:oracle官网下载注意 下载的15.0版本的jdk已经不需要配置环境变量了,但是想使用javadoc的话还需要自己配置一下环境变量java程序的编写class HelloWorld{ public static void main(String[] args) { System.out.println("Hello World!"); }}java文件保存的后缀名为.java,一个文件中可以有多个class,但是最多只能有一..原创 2021-01-05 15:22:02 · 105 阅读 · 0 评论 -
开始java之旅-------第一阶段javaSE
尚硅谷宋红康老师讲的课1: 总纲2.学习的思维方式介绍3.java技术核心(需要自己总结)java知识图解原创 2021-01-05 11:18:10 · 87 阅读 · 0 评论