,要求考试成绩必须在0-100之间,不满足就产生一个自定义异常,控制台输出一个错误信息"分数不合法"(请输出自定义异常对象的错误信息,将错误信息设置为分数不合法) 输入描述 控制台输入的int类型整数...输出描述 若分数合法则输出该分数,否则输出错误信息分数不合法 示例1 输入: 100 输出: 100 示例2 输入: -1 输出: 分数不合法 解答 定义一个异常类,然后重写异常类输入异常信息处理的方法...请使用 HashSet 解决这一问题 输入描述 键盘输入的任意字符串 输出描述 去重后的字符串(不要求顺序,预设代码中已经给出输出) 示例1 输入: helloworld 输出: rdewhlo 解答...(c); } } } JAVA38 集合遍历 描述 请使用三种方式遍历一个 list 集合 输入描述 键盘任意输入的五个int类型变量 输出描述 使用三种不同的方法遍历集合,遍历输出时不换行...输入描述 无 输出描述 预设代码中已经指定输出 解答 对于 VIP 客人,和普通客人最大的区别就在于 VIP 客人不用排队,所以无论何时 VIP 来都可以排到队列的最前边,利用 addFirst() 方法即可实现插队到第一位
我们可以知道,这些异常来自于从FruitDAOImpl实现类中调用的单精度方法。 为什么呢?...在IDEA中按住Ctrl键,单击addFruit()方法,就跳转到了其来源:FruitDAO接口 (不是使用IDEA的伙伴,还请手动点开FruitDAO接口) 但实际上,我们使用的是该接口实现类中...,使用一个Fruit类型接收; 第二步就是判断水果是否存在于数据库中,其实这一步在调用实现类方法时就已经完成了,如果不存在,Fruit类型接收到的是空值; 第三步就是输出获取到的水果信息,不存在的水果则给出相应提示即可...退出方法会返回布尔类型,类型会被客户类Client中的flag接收,以终端程序: //退出方法 public boolean exit(){ System.out.print...完成这样的优化,将会带来极大的便利,当我们需要增加功能,更多的类与方法需要被设计与实现,那么通用方法就能被重复使用,从而让代码更加简洁,减少冗余与代码重复问题,还能大幅度减少工作量。
(); N n = (N) m; n.funN(); } } 但是以上代码如果不使用向上转型,而是直接使用子类对象进行实例化后也可以调用子类B中的特殊方法... 为什么还要向下转型呢? ...因为在某些情况下,虽然达到的效果是一样的,但是向下转型更带有一定的目的性:调用子类中的特殊方法 对于对象的转型,我们给出总结: 80%的情况下都只会使用向上转型,因为可以得到参数类型的统一...,因为对象的转型操作里面毕竟有了强制问题,容易带来安全隐患 向下转型为什么会带来安全隐患呢? ...A a = new A(),并不涉及其他类,也就是与外界隔绝了联系, 外界的事情它都不清楚,所以会发生编译错误 */ b.print(); } } 编译错误信息如下
可用来创建不可变类,语法 简短。参考JEP 395....Jackson 2.12 支持 Record 类 任何时候创建 Java 类,都会创建大量的样板代码,我们可能做如下: 每个字段的 set,get 方法 公共的构造方法 重写 hashCode, toString...("商品信息 = " + s); } } ProductRecord 实现 print()方法,打印商品详情。...(1001,"手机",200); productRecord.print(); } Local Record Record 可以作为局部对象使用。...public class SomeService { //定义业务方法,判断年龄是否18 public boolean isEligible(Object obj){
可用来创建不可变类,语法 简短。参考JEP 395....Jackson 2.12 支持 Record 类 任何时候创建 Java 类,都会创建大量的样板代码,我们可能做如下: 每个字段的 set,get 方法 公共的构造方法 重写 hashCode, toString...("商品信息 = " + s); } } ProductRecord 实现 print()方法,打印商品详情。...(1001,"手机",200); productRecord.print(); } 图片 Local Record Record 可以作为局部对象使用。...public class SomeService { //定义业务方法,判断年龄是否18 public boolean isEligible(Object obj){
}else{ System.out.println("验证码错误,请重新输入"); } }...System.out.println("用户名:"+username+"可以使用"); break; }...("身份证格式错误,请重新输入"); } } while (true){ System.out.print("请输入电话号码...,没有使用正则表达式。...2.使用ArrayList集合来实现简单的学生管理系统,测试类和用数组实现的方法一样。
var str = "helloworld"; System.out.println(str); 局部变量类型推断就是左边的类型直接使用var定义,而不用写具体的类型,编译器能根据右边的表达式自动推断类型...然而在使用var定义变量时,必须立刻赋值,例如下面的情况是错误的: var a; 因为在不赋值的情况下,JVM无法推断当前变量的类型。...在类中的成员变量(也叫属性)不可以使用var来定义,例如下面的情况是错误的: class Student{ var name = "小明"; var age = 20; } var的好处在lambda...,trim()方法也能够去除字符串首尾的空白,那为什么Oracle还要设计一个重复的方法呢?...所以在功能上,strip()方法更加强大。 HttpAPI 这是Java9开始引入的一个处理HTTP请求的API,该API支持同步和异步,而在Java11中已经为正式可用状态。
二、为什么要用阻塞队列? 有了阻塞队列,我们不需要关心何时阻塞线程,何时唤醒线程。因为这些操作阻塞队列都帮我们做了。队列为空那么取元素的线程会自动被阻塞,队列已满那么添加元素的线程会自动阻塞。...默认是非公平的,也就是说,它的方法都用Lock上了锁,我们知道lock可以通过true或者false来指定使用公平锁还是非公平锁。...当然,它也有带参构造,可以指定容量,但是不能指定使用公平还是非公平锁,默认使用的是非公平锁。 SynchronousQueue:这个队列比较特殊,只能存储一个元素。...synchronized 和 lock 的区别: 锁 原始构成 使用方法 等待是否可中断 是否公平 唤醒 synchronized 是关键字,属于JVM层面,底层通过monitor对象来完成 不需要用户手动释放锁...看看如何使用 ReentrantLock 来解决。
= 1 } 在 System.out.println() 语句中使用了 + 运算符。...但在 Java 中,由于 Java 不会自动的将 int转换成 boolean类型,所以在编译时就会抛出一个编译时错误,从而阻止我们进一步去运行程序。 ?...建议不要在表达式中使用++, 因为这样的代码很容易让人困惑,而且会带来烦人的 bug。 ⑤ 关系运算符 关系运算符会通过产生一个布尔(boolean)结果来表示操作数之间的关系。...= 可用于所有基本类型,但其他运算符不能用于基本类型 boolean,因为布尔值只能表示 true 或 false,所以比较它们之间的“大于”或“小于”没有意义。 关系运算符包括: == 等于 !...你必须使用所有对象(不包括基本类型)中都存在的 equals() 方法(所有的类都继承自 Object 类,equals 方法就是 Object 类提供的,后续会详细讲解),该方法用于判断两个对象是否具有相同的引用
**** ***** void类型返回值的方法调用: 单独调用 输出调用(错误) 赋值调用(错误) */ class FunctionDemo3 { public static void main...} System.out.println("--------------"); //如果需要继续改变,我们就应该考虑使用方法改进。...a:动态初始化 只指定长度,由系统给出初始化值 b:静态初始化 给出初始化值,由系统决定长度 动态初始化的格式: 数据类型[] 数组名 = new 数据类型[数组长度]; 举例: int[]...(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } } (4)数组的初始化 A:动态初始化 只给长度,系统给出默认值...) D:本地方法区(系统相关) E:寄存器(CPU使用) 注意: a:局部变量 在方法定义中或者方法声明上定义的变量。
a = true; boolean b = false; System.out.println("a = " + a); System.out.println...在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java...这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。 虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。...四、Python 程序: a = True print(a) b = False print(b) print(1 > 2) 运行结果: ? 注意: python中不能显示写出数据类型,否则会报错。...比如在C/C++/Java中,你可以写int a = 10; 但是在Python中,写int a = 10会导致编译错误,只能写成a = 10
|| new Test() {{Test.main(null);}}.equals(null)); } public void print(boolean flag){...(boolean flag) { if (flag) { System.out.println("我是if语句的分支"); } else {...没错,上述的程序在本质上,main方法执行了两次。为什么会是执行了两次呢?原因就在main方法中调用print()方法时,传递的参数上。所以,我们先来看看调用print()方法传递的参数,如下所示。...()方法传递的参数中,args == null为true,执行print()方法的if语句,这点不难理解。...此时,再次执行print()方法时,传递的flag为false,执行了else语句的逻辑。
实例方法调用 比如我们希望执行 print的sayHello方法,可以如下使用 Object ans = Ognl.getValue(Ognl.parseExpression("#print.sayHello...特殊传参 一般的java操作,无外乎方法调用,属性访问两种,接下来我们聚焦在方法的调用上;如果一个方法接收的参数是一些基本类型的对象,使用起来还比较简单;但是其他的场景呢?...)"), context, context.getRoot()); System.out.println("class 参数方法执行:" + ans); 上面给出了两种方式,一个是根据已有的对象获取...()); System.out.println("枚举参数方法执行:" + ans); 输出结果 enum: print enum:CONSOLE 枚举参数方法执行:null c. null传参 目标方法如下...声明 尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。...testOnBorrow = true;//在取连接时测试连接的可用性 private static boolean testOnReturn = false;//再还连接时不测试连接的可用性...那么为什么要使用Lua语言来实现呢?因为要确保上述操作是原子性的。关于非原子性会带来什么问题,可以阅读【解锁代码-错误示例2】 。...错误示例1 最常见的解锁代码就是直接使用jedis.del()方法删除锁,这种不先判断锁的拥有者而直接解锁的方式,会导致任何客户端都可以随时进行解锁,即使这把锁不是它的。...---- 总结 本文主要介绍了如何使用Java代码正确实现Redis分布式锁,对于加锁和解锁也分别给出了两个比较经典的错误示例。
任何时候如果可能的话,使用预定义类将会使你的代码容易读懂,并且可以消除由畸形的字符类引入的错误详情请参阅预定义字符类 的更多细节。请注意,第一个反斜杠\的\ D。...如果你是一个字符串中使用转义构造,你必须先反斜杠用另一个反斜杠的编译字符串。这就是为什么我们需要使用\\ D。...在Windows中使用\ r表示CR(回车),在Unix系统中使用\ n表示LF(换行),在Mac OS中使用\ r\ n表示CR + LF,因此,最简单直接的方法是通过换行符来分割字符串 String...这种方法仍然是使用compile()来得到一个Pattern的实例,和一个字符串相匹配。...(prime(14)); // false System.out.println(prime(15));} public static boolean prime(int n) {
:while(true) / for(;;) ---- 0x06 JAVA函数(方法) A:为什么要有方法?...,如果没有return返回值 可导致 输出调用/赋值调用错误; (1)方法重载概述和使用 A:什么是方法重载: 在同一个类中,方法名相同,参数列表不同。...true:false; } } // #### 重载案例4 #### // false // true (2)方法可变参数的概述和使用 描述:定义方法的时候不知道该定义多少个参数 格式:修饰符...(arr[i]+"\t"); } System.out.println(); //案例2: 封装方法调用数组遍历 print(arr);...方式4 int[][] arr3 = new int[3][]; //存放了三个一维数组 默认初始化值为null,由于我们没有给出二维数组得值; System.out.println
:while(true) / for(;;) 0x06 JAVA函数(方法) A:为什么要有方法?...,一定要有return带回一个值,如果没有return返回值 可导致 输出调用/赋值调用错误; (1)方法重载概述和使用 A:什么是方法重载: 在同一个类中,方法名相同,参数列表不同。...true:false; } } // #### 重载案例4 #### // false // true (2)方法可变参数的概述和使用 描述:定义方法的时候不知道该定义多少个参数 格式:修饰符...(arr[i]+"\t"); } System.out.println(); //案例2: 封装方法调用数组遍历 print(arr);...方式4 int[][] arr3 = new int[3][]; //存放了三个一维数组 默认初始化值为null,由于我们没有给出二维数组得值; System.out.println
而上面的这个问题, 解决方法就是避免判断符号: public static boolean isOdd(int i){ return i % 2 !...注: 使用BigDecimal的时候, 不要使用BigDecimal(double d)的构造方法, 在double与double之间传值的时候依旧会引起精度损失. 这是一个严重的问题....因此这也就解释了为什么byte到char的过程存在负号变正号...., 给出如下解决方式: 1.使用String.valueOf(number); 转字符串后再进行连接操作. 2.使用System.out.println(number); 调用重载的println(char...Integer中的equals方法: public boolean equals(Object obj) { if (obj instanceof Integer) {
在不转换为ArrayList的情况下,可以通过使用TreeSet来实现排序。TreeSet是Set的另一个实现,并且在使用默认构造函数创建Set时,使用自然排序进行排序。...在整型情况下,排序方法没有错误,因为Integer类实现了Comparable。...@Override public boolean equals(Object o) { if (this == o) return true; if (o ==..., no=1} ,Student{name='Biplab', no=3} ,Student{name='Biplab', no=2} , 结论 我们经常对Comparable/Comparator的使用以及何时使用哪个感到困惑...此外,没有提供使用Set / array进行排序的详细示例,因为实现与ArrayList非常相似,而ArrayList我已经详细给出了示例。
|| new Test() {{Test.main(null);}}.equals(null)); } public void print(boolean flag){...(boolean flag) { if (flag) { System.out.println("我是if语句的分支"); } else {...没错,上述的程序在本质上,main方法执行了两次。为什么会是执行了两次呢?原因就在main方法中调用print()方法时,传递的参数上。所以,我们先来看看调用print()方法传递的参数,如下所示。...()方法传递的参数中,args == null为true,执行print()方法的if语句,这点不难理解。...此时,再次执行print()方法时,传递的flag为false,执行了else语句的逻辑。 ? 是不是很神奇呢?
领取专属 10元无门槛券
手把手带您无忧上云