- 博客(30)
- 收藏
- 关注
原创 JAVA基础|集合框架-Collection,Map
Collection是一个,Map是一个。那么什么是单列集合,什么是双列集合呢?单列集合,就是每个数据只包含一个值,而双列集合就是每个数据包含两个值(键值对)
2024-05-28 16:30:17
791
原创 JAVA基础|异常
虽然java提供了很多异常类,但并不能够为世界上全部的问题都提供异常类来代表,如果企业自己的某种问题想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了定义一个异常类继承RuntimeException重写构造器通过throw new 异常类(xxxx)来创建异常对象并抛出。编译阶段不报错,提醒不强烈,运行时才可能出现!!//需求:保存一个合法年龄try {System.out.println("底层是执行成功的!");
2024-05-20 17:41:59
224
原创 JAVA基础|常用API-JDK8之前传统的日期,时间
在这里要注意的一点是,我们在创建SimpleDateFormat对象时,这个格式一定要和我们被解析的字符串的格式是一样的。在上面的例子中,format()即可以将Date类型的时间改为特定格式输出,也可以将毫秒值改为特定时间输出。一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区。代表简单日期格式化,可以用来把日期对象,时间毫秒值格式化成我们想要的形式。yyyy年MM月dd日 HH时mm分ss秒 E。yyyy年MM月dd日 HH时mm分ss秒。
2024-05-02 11:06:54
960
1
原创 JAVA基础|常用API-BigDecimal
因为1/3本身就是非精确运算,但是BigDecimal必须要有一个精确的结果,所以这里就报错了。这个时候,我们就需要修改一下了,采用public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式)来对它进行四舍五入。可以看到在上述代码中,0.1+0.2并不完全等于0.3,这在某些情况下会出现问题,所以这个时候我们就要用到BigDecimal了。实际上,我们直接采用第二种方法即可,通过valueOf方法,他会自动将a和b转化为BigDecimal,不需要我们手动去写。
2024-05-01 20:30:36
275
原创 JAVA基础|常用API-Runtime
首先我们知道,打开了程序后会创建这个程序的对象,这个时候我们将它赋给Process变量p,接着,为了防止一打开程序立马就关闭了,我们在打开程序与关闭程序之间通过Thread.sleep让它等待5s后再执行p.destroy方法关闭程序。这个方法大家并不陌生,在System类中也有这样的一个方法,但实际上System类中的exit方法其实调用的就是Runtime中的exit方法。要注意的是,Runtime是一个单例类,他的构造器被私有化了,那么如果要创建对象则需要直接调用getRuntime方法。
2024-05-01 18:50:10
18
原创 JAVA基础|常用API-System
返回的是long类型的时间毫秒值:指的是从1970-1-1 0:0:0开始走到此刻的总的毫秒值,1s=1000ms。那么这个有什么作用呢?exit中的参数用作状态代码,按照惯例,非零状态代码标识异常终止。这样,我们就可以用于查看一个程序的执行性能怎么样。System代表程序所在的系统,也是一个工具类。
2024-05-01 18:20:35
120
原创 JAVA基础|常用API-StringJoiner
在StringBuilder中我们讲到,采用StringBuilder的拼接是十分迅速的,但是写的代码非常的多,那有既高效,有能实现更方便的拼接呢?那就是StringJoiner。要注意,在s.add中添加的要是一个String类型的变量,所以我们在arr[i]后面加了一个""来让他变为一个String。并且在有些场景下使用它操作字符串,代码会更简洁。是不是代码简单了很多呢?
2024-05-01 14:41:26
17
原创 JAVA基础|常用API-StringBuilder
那么,为什么我们操作字符串建议使用StringBuilder而不是String呢?String是不可变字符串,在操作字符串的时候性能是比较差的。而StringBuilder是可变的字符串容器,他在操作字符串上效率高很多。我们以拼接为例,分别让String和StringBuilder来拼接1000000条字符串,看看谁的执行效率更高。i++) {在上述代码中,我们是用String来进行拼接的,运行后会发现需要很久很久控制台才能输出。
2024-05-01 14:03:38
135
原创 JAVA基础|常用API-包装类
在上面的代码中,我们将Integer类型的a转化为了字符串rs1,将rs1+1打印出来会发现,打印出来的是231,而不是24,即将Integer成功转换为了字符串。例如在下面的ArrayList集合中,我们想仅允许向集合中添加int类型的变量,当我们在这里写上int,会发现并不支持,这个时候我们就需要用到包装类了。同样,在后面的int rs中,我们也没有将Interger对象转化为基本数据,而是java通过自动拆箱帮我们直接转化为了基本数据。通过自动拆箱,可以将对象a3自动转化为int基本类型的a4变量。
2024-05-01 12:44:18
7
原创 JAVA基础|常用API-Objects类
这时我们将对象自身的equals方法注释掉,只采用Objects类带有的equals方法,会发现程序正常运行,返回值false。在上面的代码中,我们分别采用了对象自身的equals方法和Objects类的equals方法来对s1,s2两个对象做比较。其实,Objects类的equals方法也只是多写了一个非空校验,判断是否为空以后才决定是否继续进行比对。通过上面的例子我们可以发现,Obejects类的equals方法能够有效避免空错误,这样会更安全。为空返回false,不为空返回true。
2024-05-01 11:54:47
16
原创 JAVA API | Object类
可以看到,s1和s2的内容是相等的,但是s2.equals(s1)打印出来的内容却是flase。要注意,不是所有类都可以克隆,我们还需要让当前类实现Cloneable接口才能让对象使用clone方法。当我们想调用这个clone方法时,会发现这个clone方法无法调用,因为他被protected修饰了,只有obeject的子类,lang包才能使用。protected:在子类,当前类的包下 中可以访问,在子类对象中不能访问。说明:当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回。
2024-04-20 12:22:09
260
原创 JAVA基础 | 泛型的注意事项:擦除问题,基本数据类型问题
上面的Integer就是int的对象数据类型,Double就是double的对象数据类型。在这种情况下使用list.add所添加的内容将会被当作对象来处理。可以看出,我们所写的泛型被擦除了,底层被恢复成了object,然后使用强制类型转换。上面的代码中,我们对list对象使用了泛型,规定只能添加/获取String类型。
2024-04-10 16:25:52
195
1
原创 JAVA基础 | 泛型方法
在上面的代码中,我们给ArrayList对象规定的泛型是BMW,在这种情况下,我们会发现无法调用go方法,这是为什么呢?其实这里的ArrayList<BMW>,ArrayList<BENZ>和ArrayList<Car>是毫无关系的,我们将ArrayList<Car>比作为一个公共厕所,将ArrayList<BMW>和ArrayList<BENZ>分别比做男厕所和女厕所。,在使用泛型的时候可以代表一切类型,但同样,这样做可以让Dogs对象调用go方法,为了避免,我们可以给?为啥上面这个不是泛型方法呢?
2024-04-10 15:58:29
277
1
原创 JAVA基础 | 枚举 - 为什么要使用枚举?
在main类中,我们定义了一个check方法,用来检测是男生还是女生,如果是男生,就给他输出“展示一些美女图片,游戏信息”,如果是女生,就给他输出“展示一些帅哥图片,土豪信息”。分析上面的代码,我们定义了一个main类和一个Constant类,main类用来执行,Constant类用来存放常量。在Constant类中,我们存储了男生,女生两个变量,方便main类中进行调用。这样的话就只能规定输入BOY/GIRL了,否则就会报错。
2024-04-06 17:36:03
97
1
原创 JAVA基础 | 枚举 - 认识枚举
可以获取枚举类的全部对象。在下面的代码中,将拿到的所有对象存入数组as。以上是我们在编译器中编写的代码,那么在实际编译后是什么样子呢?由于枚举类本身的构造器是私有化的,所以可以很快就写出一个单例设计模式。以上是一个抽象枚举的例子,那么我们现在来Main类中调用一下。要注意的是,在枚举类中,第一行必须是枚举对象的名字。2. 枚举类的第一行都是常量,记住的是枚举类的对象。首先,将枚举对象Z存入a1变量,接着,可以使用。所谓抽象枚举,就是在枚举类中定义抽象方法。这样将会输出结果:张三在跑~~获取枚举对象的名称;
2024-04-06 17:02:37
258
1
原创 JAVA基础 | 内部类介绍及特点
在上述情况中,我们创建一个s1对象,并在里面写上独有的“狗游泳”方法,再将s1传递给go方法。外部类名.内部类名 对象名 = new 外部类(...).new 内部类();参照成员内部类,只需要在定义成员内部类的时候在前面加上static关键词修饰。外部类.静态内部类 对象名 = new 外部类.静态内部类();可以直接访问外部类的静态成员,不可以直接访问外部类的实例成员。这里所用到的,就是匿名内部类!局部内部类是定义在方法中,代码块中,构造器等执行体中的类。定义:一种特殊的局部内部类,所谓匿名,
2024-04-01 17:35:15
514
原创 JAVA基础|静态变量(静态字段)
实例字段在每个不同的实例中将会开辟一个自己新的内存空间,而不同实例中的静态字段都指向同一个内存空间。显而易见,可以将一些公用的变量写为静态字段,以防止重复加载,重复开辟内存空间,造成不必要的浪费。每次对实例中调用的静态变量的修改,那么所有实例中调用的该变量都会被修改。在上面的例子中,我们在main类中调用Person内中的静态字段时,每创建一个number都需要去创建一个对象,然后使用。去使用,事实上不需要这样去做,也本不应该这样做,实例对象能访问静态字段只是因为编译器可以根据实例类型自动转换为。
2024-04-01 11:18:53
512
原创 JAVA中接口的几点注意事项
如果父类和接口中有同名的默认方法,实现类会优先用父类中的。(被继承的接口中方法名称相同),则此时不支持多继承。如果多个接口中存在方法签名冲突,则此时不支持多实现。,可以不冲突,重写该方法即可。,如果多个接口中存在。
2024-03-31 17:29:21
319
1
原创 JDK8 开始接口新增的三种方法
注意:默认方法是实例方法,也就是对象的方法,但由于接口的对象不能直接调用,所以需要先创建类来继承这个接口,再去通过创建这个类的对象来使用接口中的方法。默认方法需要用default修饰,不需要在前面加public修饰,因为系统会自动在前面加上public修饰。static方法就可以在外部class直接调用了,无需创建一个新的对象。必须使用private来修饰。注意:JDK9开始才支持。必须使用static修饰。
2024-03-31 16:55:23
173
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人