Java SE初级
文章平均质量分 81
Java SE基础
Apple_Web
吃苹果的程序员正在努力ing...
展开
-
定时任务场景下的代码审查:continue和return的滥用可能引发潜在bug
在最近的代码审查中,有帮忙审查了组里一个刚毕业1年不到的应届生,发现他写的其中一段代码将for循环中的break、continue、return滥用,导致了一个潜在的bug风险,这个风险后文我们再来分析。continue关键字的作用是跳过当前的迭代,继续执行下一次的迭代。它可以用来跳过某些不需要执行的情况,或者优化循环的效率。break关键字的作用是结束当前的循环,跳出循环体。它可以用来提前终止循环,或者跳出嵌套的循环。return关键字的作用是结束当前的方法,并返回一个值(如果有的话)。原创 2023-11-04 17:22:17 · 292 阅读 · 0 评论 -
如何在项目中正确使用异常?
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。原创 2023-02-12 17:41:13 · 879 阅读 · 1 评论 -
Kotlin基础语法总结
基本语法函数函数返回无意义的值:Unit 返回类型可以省略:fun sum(a: Int, b: Int): Int { return a + b}fun sum(a: Int, b: Int) = a + b变量定义只读局部变量使用关键字 val 定义。只能为其赋值一次。val a: Int = 1 // 立即赋值val b = 2 // 自动推断出 `Int` 类型val c: Int // 如果没有初始值类型不能省略c = 3 // 明确赋值可重原创 2021-10-24 00:03:24 · 312 阅读 · 0 评论 -
一文搞懂Java的值传递和引用传递
文章目录实参与形参值传递与引用传递Java中的值传递总结关于这个问题,引发过很多广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同,甚至很多人理解的是错误的。还有的人可能知道Java中的参数传递是值传递,但是说不出来为什么。在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。错误理解二:Java是引用传递。错误理解三:传递的参数如果是普原创 2020-07-31 14:46:17 · 2632 阅读 · 6 评论 -
一文带你搞清String是值传递还是引用传递?
String中的坑最近看到一道关于String的面试题,差点让我以为String是值传递,就是下面这个例子,体验下:public class Demo{ public static void main(String[] args) { Demo d = new Demo(); String str = "BEA"; d.change(str); System.out.println(str); } void ch原创 2020-07-31 14:21:06 · 9267 阅读 · 9 评论 -
HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
文章目录HashMap 遍历1.迭代器 EntrySet2.迭代器 KeySet3.ForEach EntrySet4.ForEach KeySet5.Lambda6.Streams API 单线程7.Streams API 多线程性能测试性能原理分析安全性测试1.迭代器方式2.For 循环方式3.Lambda 方式4.Stream 方式小结总结随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题。本文先从 Hash转载 2020-05-09 14:28:11 · 1699 阅读 · 1 评论 -
Java实战之俄罗斯方块(源码+exe/无需安装环境+带音乐+好看UI)
文章目录俄罗斯方块游戏(JAVA版)项目实战指南1. 项目范围说明书1.1引言1.2概述1.3项目需求1.3.1需求概述1.3.2界面需求1.3.2.1界面设计原则1.3.2.2游戏界面原型1.3.2.3界面各部件说明菜单方块下落区域下一方块预览区操作说明区得分和等级1.3.3游戏业务需求1.3.3.1需求概述1.3.3.2详细业务需求1.4项目文档1.4.1项目规划1.4.2详细设计1.4.3项...原创 2020-05-08 09:43:07 · 9838 阅读 · 3 评论 -
Java中main方法的理解和执行过程
main方法的格式讲解:public static void main(String[] args) {...}public:公共的,访问权限是最大的。由于main方法是被jvm调用,所以权限要够大。static:静态的,不需要创建对象,通过类名就可以。方便jvm的调用。void:因为我们曾经说过,方法的返回值是返回给调用者,而main方法是被jvm调用。你返回内容给jvm没有意义。ma...原创 2020-04-27 17:19:08 · 10597 阅读 · 1 评论 -
Java中new一个对象到底发生了什么?
代码如下:public class Student { private String name = "林青霞"; private int age = 27; public Student() { name = "刘意"; age = 30; }}class StudentDemo { public stat...原创 2020-04-27 17:01:10 · 895 阅读 · 0 评论 -
几个JDK环境变量的含义你懂了吗
文章目录前言一、windows 下配置JDK环境变量二、JDK环境变量的含义前言说起JDK环境变量配置,大家可能会说so easy,百度一搜一大堆,配置一下就完事了,但是配置的那几个变量什么意思,可能大部分人从来没有去细想,这时候面试官来问你这些问题,你能答出来吗?一、windows 下配置JDK环境变量1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:/jav...原创 2020-04-26 11:29:26 · 632 阅读 · 0 评论 -
JDK1.0-1.11版本特性总结
文章目录【1】回顾JDK1.0-1.4① JDK1.0②JDK1.1③JDK1.2④JDK1.3⑤JDK1.4【2】JDK1.5① 泛型② 增强for循环③ 自动拆装箱(Autoboxing/unboxing)④ 类型安全的枚举(Type safe enums)⑤ 静态导入(Static import)⑥ 元数据(Metadata)⑦ 线程池【3】JDK1.6① Desktop类和SystemTr...原创 2019-12-03 22:37:53 · 1221 阅读 · 0 评论 -
Java内部类详解及其原理整合
文章目录整合一:Java内部类的定义、如何创建内部类、内部类的分类、内部类与外部类的关系1. 内部类的基本概念1.1 内部类的定义1.2 内部类的优缺点2. 创建内部类2.1 在外部类外部 创建非静态内部类2.2 在外部类外部 创建静态内部类2.3 在外部类内部创建内部类语法3. 内部类的分类3.1 成员内部类3.2 静态内部类3.3 方法内部类3.4 匿名内部类4. 内部类与外部类的关系整合二:...原创 2019-12-03 15:15:46 · 918 阅读 · 0 评论 -
Java中String字符串面试详解
从一个博客上看到的6个题,先看看吧,如果都会了,这部分的知识就掌握的不错啦!输出结果在代码注释后面:test1:package StringTest;public class test1 {public static void main(String[] args){String a = "a1";//“a1”在编译的时候就能确定,所以编译的时候,a1被放进了常量池中,同时a指向常...转载 2019-12-01 20:41:01 · 378 阅读 · 0 评论 -
Java反射的好处
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java的反射机制就是增加程序的灵活性,避免将程序写死到代码里, 例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么...原创 2019-10-23 15:28:53 · 866 阅读 · 0 评论 -
你要的Java常见异常都在这里
文章目录1、java.lang.ArithmeticException2、Java.lang.StringIndexOutOfBoundsException3、Java.lang.NullPointerException空指针异常4、ClassCastException5、IllegalArgumentException6、NumberFormatException7、ClientAbortExc...原创 2019-10-22 20:16:36 · 1535 阅读 · 1 评论 -
为什么boolean类型变量不推荐使用is开头
背景:平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?例子:1.其他非boolean类型 private String isHot; public String getIsHot() { return isHot; }2.b...原创 2019-09-08 19:25:27 · 10924 阅读 · 6 评论 -
为什么重写equals就必须重写hashCode
因为最近在整理Java集合的源码, 所以今天再来谈谈这个古老的话题,因为后面讲HashMap会用到这个知识点, 所以重新梳理下。如果不被重写(原生Object)的hashCode和equals是什么样的?不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)。为什么需...原创 2019-09-01 15:20:52 · 10449 阅读 · 3 评论 -
面向对象和面向过程解读
首先来看一下常见的名词:OOA 面向对象分析(分析问题)OOD面向对象设计(定义问题)OOP面向对象编程(解决问题)面向对象思考:面向过程的范式重点在于设计方法面向对象的范式将数据和方法结合在一起构成对象,使用面向对象范式软件设计重点在于对象以及对象的操作上面向对象开发就是不断的创建对象,使用对象,指挥对象做事情。面向对象设计其实就是在管理和维护对象之间的关系。面向对象的常用设计方...原创 2019-09-07 19:21:25 · 2008 阅读 · 0 评论 -
unsigned int 和signed int
无符号整型(unsigned int): 取值是 2^31 - 1,即:0~4294967295有符号整型((signed)int)(1)int类型: 默认是有符号的,所以int实际上是signed int ,我们通常省略signed,它的取值范围就与无符号整型不同了。它的范围是-2147483648~2147483647这个范围可以理解为无符号整型的一半变成了负数。有无符号的根本原因可以说...原创 2019-09-08 00:34:21 · 3757 阅读 · 0 评论 -
Java中的···可变长参数
Java1.5引入。"…“必须是方法的最后一个形参,表示多个(0,1,2,…)参数,类似数组参数,使用数组传实参。但是与数组参数又有区别,”…"表示可变长参数(多个参数),数组参数只是一个参数。详见下面举例:public static void printAry(Object... objs){ for(Object obj:objs){ System.out.print(obj+" ...原创 2019-09-08 00:35:47 · 926 阅读 · 0 评论 -
parseInt、valueOf、intValue和toString的区别
1.parseInt()和valueOf()Integer.parseInt()返回值是int型的,Integer.parseInt()将Integer类型解析成 int类型,返回Int类型,入参可以是String类型Integer.valueOf()返回值是Integer型的,Integer.valueOf()返回Integer类型 ,入参可以是String,int 类型String 类中...原创 2019-09-08 00:37:08 · 1852 阅读 · 0 评论 -
Java字符串基础问题
题目一public class Test{public static void main(String[] args){ String s1 = "abc"; String s2 = s1; String s3 = new String("abc"); String s4 = new String("abc"); String s5 = "ab...原创 2019-09-08 00:39:02 · 1017 阅读 · 0 评论 -
面向对象之封装
封装最主要的功能:在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。编程中封装的具体优点:1.提高代码的安全性,隐藏信息、实现细节2.提高代码的复用性3.“高内聚”:封装细节,便于修改内部代码,提高可维护性4.“低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。5.可以对成员变量进行更精确的控制...原创 2019-09-08 00:44:22 · 975 阅读 · 0 评论 -
Java中异常抛出后代码还会继续执行吗
今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满,无法添加"); //ret...转载 2019-09-08 00:45:49 · 1616 阅读 · 1 评论 -
容易混淆的BO、VO、DTO,Bean...
Bean: 数据对象,xxxBean,xxx即为数据表名。Entity: 实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity ...原创 2019-09-08 00:47:13 · 2862 阅读 · 0 评论 -
父子类和this/super
父类:基类,超类 子类:次类,拓展类,派生类super调用父类中被覆盖的方法,变量,私有的话不可用super访问子类从父类中继承可访问的数据域和方法,还可以添加新的–拓展仅当实例方法是可访问时才可覆盖重写,静态方法也可以被继承,但是不能被覆盖子类如果没有显示调用哪个父类的构造函数,会自动调用父类无参构造,如果父类有有参构造,必须调用父类的哪个指定构造,不会再自动调...原创 2019-09-08 00:49:07 · 1011 阅读 · 0 评论 -
Java中的代码块
静态变量是被类中所有对象共享,静态方法不能访问类中实例成员math类中的所有方法都是静态的:Math.Random,PI…使用: 类名.方法名,类名.静态变量类初始化阶段: 先执行最顶层父类的静态初始化块,然后依次向下,直到执行当前类的静态初始化块对象初始化阶段: 先执行最顶层父类的初始化块,最顶层的构造器,然后依次向下,直到执行当前类的初始化块、当前类的构造器(先加载类再初始化对象)...原创 2019-09-08 00:50:46 · 929 阅读 · 0 评论 -
多态的解读
多态的定义: 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为: 动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。父类类型的变量可以引用子类型的对象(父类类型的变量指向子类的实例)–动态绑定多态的作用: 消除类型之间的耦合关系。现实...原创 2019-09-08 00:51:58 · 1048 阅读 · 0 评论 -
解读抽象类和接口
抽象类和接口的比较:两者默认方法修饰public abstract;接口默认常量修饰:public static final,抽象类可以有普通方法、变量、构造方法,接口都不可以,jdk1.8以后可以有default方法;两者都不能直接实例化(可通过匿名内部类,一次使用就消亡) ,有抽象方法的类一定为抽象类类、接口之间的关系:类和类:单继承,多重继承 类和接口:继承一个类,实现多个接...原创 2019-09-08 00:53:23 · 989 阅读 · 0 评论 -
深入解析String、StringBuffer、StringBuilder
String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。StringBuffer就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,...转载 2019-09-01 15:15:13 · 1651 阅读 · 0 评论