![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java SE
文章平均质量分 84
start from 韩顺平
Masked5
These violent delights have violent ends
And in their triumph die, like fire and powder,
Which, as they kiss, consume.
展开
-
Java8的Stream怎么使用
Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。Java中的Stream并不会存储元素,而是按需计算。数据源流的来源。可以是集合,数组,I/O channel, 产生器generator 等。聚合操作类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。Pipelining: 中间操作都会返回流对象本身。这样多个操作可以串联成一个管道, 如同流式风格(fluent style)。原创 2023-07-04 21:43:31 · 447 阅读 · 0 评论 -
Java多线程入门
◆说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。◆而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位◆通常在一一个进程中可以包含若干个线程,当然一个进程中至少有一个线程, 不然没有存在的意义。线程是CPU调度和执行的的单位。注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。转载 2023-02-22 20:22:15 · 134 阅读 · 0 评论 -
从函数式接口谈Java Lambda表达式写法的产生
也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。理解Functional Interface (函数式接口)是学习Java8 lambda表达式的关键所在。函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法, 那么它就是一个函数式接口。λ希腊字母表中排序第十一位的字母,英语名称为Lambda。,我们可以通过Lambda表达式来创建该接口的对象。◆去掉了一堆没有意义的代码,只留下核心的逻辑。◆避免匿名内部类定义过多。转载 2023-02-22 15:40:16 · 45 阅读 · 0 评论 -
Java集合(Collection List Set Map)
集合的理解和好处前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下。1)长度开始时必须指定,而且一旦指定,不能更改2)保存的必须为同一类型的元素3)使用数组进行增加元素的示意代码-比较麻烦那么集合有哪些好处呢?1)可以动态保存任意多个对象,使用比较方便!2)提供了一系列方便的操作对象的方法: add、 remove、 set、 get等3)使用集合添加, 删除新元素的示意代码-简洁了1)collection实现子类可以存放多个元素,每个元素可以是Object2)有些Colle原创 2022-12-04 17:54:43 · 471 阅读 · 0 评论 -
Java常用类(包装类 String StringBuffer StringBuilder Data Math Array System BigInteger BidDecimal)
案例:自定义Book类, 里面包含name和price,按price排序(从大到小)。要求使用两种方式排序,有一个Book[] books = 4本书对象.使用前面学习过的传递实现Comparator接口匿名内部类,也称为定制排序。books [ 0 ] = new Book("红楼梦" , 100);books [ 1 ] = new Book("金瓶梅新" , 90);books [ 2 ] = new Book("青年文摘20年" , 5);原创 2022-12-01 23:11:11 · 298 阅读 · 0 评论 -
Java异常处理机制
当程序中出现了某些"错误”,但该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述该错误信息。1)定义类:自定义异常类名(程序员自己写)继承Exception或RuntimeException2)如果继承Exception,属于编译异常3)如果继承RuntimeException,属于运行异常(一般来说,继承RuntimeException)throw new AgeException("Age应该在0-120之间.");} }原创 2022-11-18 21:41:36 · 456 阅读 · 0 评论 -
Java抽象类(abstract)
7)如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。5)抽象类可以有任意成员[抽象类本质还是类] ,比如:非抽象方法、构造器、静态属性等等。3)一旦类包含了abstract方法,则这个类必须声明为abstract [说明]4)abstract只能修饰类和方法,不能修饰属性和其它的。2)用abstract关键宇来修饰一个方法时,这个方法就是抽象方法。原创 2022-11-18 11:46:29 · 650 阅读 · 0 评论 -
Java Final关键字使用
请编写一个程序,能够计算圆形的面积。要求圆周率为3.14. 赋值的位置3个方式[定义时,在构造器中, 在代码块中]都写一下。2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。3)当不希望类的的某个属性的值被修改,可以用final修饰. [4)当不希望某个局部变量被修改,可以使用final修饰[final可以修饰类, 属性, 方法和局部变量。1)当不希望类被继承时,可以用final修饰.原创 2022-11-18 11:44:10 · 272 阅读 · 0 评论 -
Java单例设计模式入门俩例(饿汉式,懒汉式)
1.所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法2.单例模式有两种方式: 1) 饿汉式2)懒汉式。原创 2022-11-18 11:41:16 · 125 阅读 · 0 评论 -
Java代码块使用场景
但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时,或创建对象时隐式调用。代码化块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。2)代码块分为两类,使用static 修饰的叫静态代码块,没有static修饰的, 叫普通代码块。2)如果多个构造器中都有重复的语句,可以抽取到初始化块中,提高代码的重用性。1)相当于另外一种形式的构造器(对构造器的补充机制),可以做初始化的操作。代码块的好处和案例演示。原创 2022-11-18 11:39:31 · 352 阅读 · 0 评论 -
Java类变量和类方法(static)
访问修饰符 static 数据类型 变量名;[推荐]static 访问修饰符 数据类型 变量名;类方法也叫静态方法。访问修饰符 static 数据返回类型 方法名() {} [ 推荐 ] static 访问修饰符 数据返回类型 方法名() {}1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:类方法中无this的参数普通方法中隐含着this的参数2)类方法可以通过类名调用,也可以通过对象名调用。[举例]原创 2022-11-18 11:34:51 · 292 阅读 · 0 评论 -
Java接口(Interface)
演示一个案例:给Usb数组中,存放Phone和相机对象,Phone类还有一个特有的方法call() ,请遍历Usb数组,如果是Phone对象,除了调用Usb接口定义的方法外,还需要调用Phone特有方法call.你可以把手机,相机,u盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的,原因是做usb插槽的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等。,既可以接收手机对象,又可以接收相机对象,就体现了接口多态(接口引用可以指向实现了接口的类的对象)在前面的Usb接口案例,原创 2022-11-18 11:31:17 · 244 阅读 · 0 评论 -
Java内部类分类
匿名内部类的语法比较奇特,请大家注意,因为匿名内部类既是一个类的定义 ,同时它本身也是一个对象,因此从语法上看,它既有定义类的特征,也有创建对象的特征,对前面代码分析可以看出这个特点,因此可以调用匿名内部类方法。8.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。4.成员内部类—访向---->外部类(比如:属性) [访问方式:直接访问] (说明)5.外部类—访问----->内部类(说明)访问方式:创建对象,再访问。原创 2022-11-18 11:26:44 · 263 阅读 · 0 评论 -
Java 枚举(Enum)使用
简化成SPRING(“春天”,“温暖”),这里必须知道,它调用的是哪个构造器.1)使用enum关键字后,就不能再继承其它类了,因为enum会隐式继承Enum, 而Java是单继承机制。toString:Enum类已经重写过了,返回的是当前对象名子类可以重写该方法,用于返回对象的属性信息。使用enum来实现前面的枚举案例,看老师演示,主要体会和自定义类实现枚举不同的地方。3)可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。2)枚举类和普通类一样,可以实现接口,如下形式。原创 2022-11-18 10:56:03 · 847 阅读 · 0 评论 -
Java注解(Annotation)与元注解
使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素。原创 2022-11-18 10:51:06 · 213 阅读 · 0 评论 -
Java面向对象三大特性(封装继承多态)解释及案例
继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过。测试类中添加一个方法showEmpAnnual(Employee e),实现获取任何员工对象的年工资,并在main方法中调用该方法[e.getAnnual()]简单的说:方法覆盖(重写)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样那么我们就说子类的这个方法覆盖了父类的那个方法。原创 2022-11-12 17:09:40 · 1671 阅读 · 0 评论 -
Java Object类方法简要解释(equals, hashCode, toString, finalize)
2.什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。3.垃圾回收机制的调用,是由系统来决定,也可以通过System.gc()主动触发垃圾回收机制,测试: Car [name]重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式.2)两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!3)两个引用,如果指向的是不同对象,则哈希值是不一样的。原创 2022-11-12 17:05:12 · 567 阅读 · 0 评论 -
IDEA断点调试快捷键
1.在开发中,新手程序员在查找错误时,这时老程序员就会温馨提示,可以用断点调试,步一步的看源码执行的过程,从而发现错误所在。2.重要提示: 在断点调试过程中,是运行状态,是以对象的运行类型来执行的.1.断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住 ,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到这个Bug2.断点调试是程序员必须掌握的技能。原创 2022-11-12 17:01:01 · 281 阅读 · 0 评论 -
Java类与面向对象(创建对象 成员方法 形参实参 递归 重载 可变参数 作用域 构造方法 this)
5)一个形参列表中只能出现一个可变参数有三个方法,分别实现返回姓名和两门课成绩(总分),返回姓名和三门课成绩(总分),返回姓名和五门课成绩(总分)。封装成一个可变参数的方法不想做。原创 2022-11-08 12:39:55 · 852 阅读 · 0 评论 -
Java数组初始化, 冒泡排序, 查找
排序是将多个数据,依指定的顺序进行排列的过程。排序的分类:1.内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);2.外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。原创 2022-10-30 21:03:44 · 415 阅读 · 0 评论 -
Java控制结构总结[顺序控制 分支控制 循环控制]
当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环[听不懂,走案例]。return使用在方法,表示跳出所在的方法,在讲解方法的时候,会详细的介绍,这里我们简单的提一下。在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g。原创 2022-10-28 17:02:26 · 460 阅读 · 0 评论 -
Java运算符总结一览
1 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。关系运算符的结果都是boolean型,也就是要么是true,要么是false。算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。2 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值。运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。2.如果条件表达式为false,运算后的结果是表达式2;1.如果条件表达式为true,运算后的结果是表达式1;赋值运算符就是将某个运算后的值,赋给指定的变量。原创 2022-10-27 17:09:27 · 955 阅读 · 0 评论 -
Java中float与double的大小范围计算方式
为了消除负数带来的实际计算上的影响(比如比较大小,加减法等),可以在实际存储的时候,给指数做一个简单的映射,加上一个**偏移量,**比如float的指数偏移量为127,这样就不会有负数出现了.第二部分用来存储**指数(exponent),**这里的指数是十进制的 6 (指数也有正负之分)指数如果是6,则实际存储的是6+127=133,即把133转换为二进制之后再存储。第一部分用来存储**符号位(sign),**用来区分正负,这里是 0,表示正数。我们注意到指数可能是负数,也有可能是正数,即。翻译 2022-10-26 19:56:55 · 675 阅读 · 0 评论 -
Java基本数据类型与类型转换
在将String 类型转成基本数据类型时,要确保String类型能够转成有效的数据, 比如我们可以把"123",转成一个整数, 但是不能把"hello"转成一个整数.字符类型可以表示单个字符,字符类型是char, char是两个字节(可以存放汉字),多个字符我们用字符串String(我们后面详细讲解String)byte和boolean是八位,short和char是16位,int和float是32位,double和long是64位。1.字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如’a’原创 2022-10-26 19:08:25 · 738 阅读 · 0 评论 -
Java 8u251 环境配置
文章目录1 JDK软件版本2 安装成功与否检测3 配置过程4 反省5 ideaIU编译器配置1 JDK软件版本jdk-8u251-windows-x64百度网盘分享:链接:https://pan.baidu.com/s/1p0DWugZFavLzZd6y0ecCRg提取码:5brn2 安装成功与否检测打开cmd输入以下仨命令,输出正常就算OK了记住:当配置完成时,需要重新打开cmd输这仨命令才行!javajavacjava -verison3 配置过程上面那个exe一路无脑下一步原创 2021-07-11 17:51:09 · 1440 阅读 · 1 评论 -
为什么在cmd javac编译的代码含有中文执行输出会乱码呢?
换了个汉字,“山” 编码的十六进制是 “E5B1B1”,B1大于7F,最后一个字节依旧没有对应字母,经典❓再次现身!老师在给了一个样例程序之后,通过javac编译,java执行后成功输出了Hello, World。中,字母使用1个字节,一个汉字对应两个字节。最后的“AA”是十六进制表示,转换为十进制是 “170”,对应的就是“?——自己探索去吧,问题总是一个接一个来,木有尽头,适可而止。也证明了“AA”这块没有编码,猜测一下没有对应的就是"?AA那块是空白的,没有对应字段,维基的。,在自己电脑上新建了。原创 2022-10-26 11:36:14 · 1234 阅读 · 0 评论 -
Java各版本比较(Java SE、java EE、Java ME)
java是作为长时间流行的语言,在这过程中出现了很多版本,各版本之间又进行的新的派生,导致版本很多,对于初入java的人来说,会产生混乱。翻译 2022-10-25 22:53:08 · 3323 阅读 · 0 评论 -
JDK, JRE & JVM 区别与联系
它是JVM的实现,即在JVM中定义的规范被实现,并为代码的执行创造相应的环境。JRE主要包括java二进制文件和其他类,以执行与JVM实际存在的程序不同的东西。除了Java二进制文件外,JRE还包括各种部署技术、与所执行的代码进行交互的用户界面、一些用于不同功能的基础库以及基于语言和利用的库。JDK是Java Development Kit的缩写,包括编译、调试和执行Java程序所需的所有工具、可执行文件和二进制文件。的缩写,它基本上是一种规范,提供了一个可以执行Java字节代码的运行环境。原创 2022-10-25 17:01:32 · 282 阅读 · 0 评论