Java语法
孤鸿踏雪
一介书生,三尺微命。
展开
-
java一个类实现多个接口,这些接口具有相同的default方法的场景
场景描述:一个类实现两个接口,这两个接口里面都有一个相同方法名的方法,那么该类在引用这个方法的时候,具体是是引用的那个呢?目录场景描述:1、如果该类自己也有一个同名的方法2.如果该类没有实现这个方法2.1 如果这些接口之间没有继承关系 2.2 如果这些接口有继承关系1、如果该类自己也有一个同名的方法 那么毫无疑问,这个调用方法,是它自己的。public interface Animal { public void run(); ...原创 2020-05-17 23:26:35 · 2367 阅读 · 1 评论 -
java 线程变量值得变化笔记
在java 内存模型中每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值的信息。当线程访问某一个对象值得时候,首先通过对象的引用找到在堆内存的变量的值(read),然后把这在队内变量的具体值load到线程本地内存,建立一个变量副本,之后线程就不在和堆内存变量的值有任何关系,而是直接修改副本变量的值,在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆内存该变量中,这样堆内存中这个对象的值就发生变化了。public class Counter { priva原创 2020-05-10 15:45:43 · 267 阅读 · 0 评论 -
java 深拷贝和浅拷贝
java 中如果要克隆,对于基本类型来说,需要实现Cloneable接口,不需要实现自定义clone()方法,只需要 @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); }即可,但是如果不是基本类型,还是这样操作的话,就...原创 2020-05-06 12:41:17 · 109 阅读 · 0 评论 -
Integer类中默认缓存-128~127之间的整数值
当我们给一个 Integer 对 象赋一个 int 值的时候,会调用 Integer 类的静态方法 valueOf,如果看看 valueOf 的源代码就知道发生了什么。 /** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {...原创 2020-05-06 12:41:08 · 472 阅读 · 0 评论 -
java.time 的 API
java8中 关于时间的API 这里保存下,留作以后拿来即用的工具package com.example.demo.java8.service;import java.time.*;import java.time.chrono.ChronoLocalDateTime;import java.time.chrono.Chronology;import java.time...原创 2020-05-06 12:40:45 · 204 阅读 · 0 评论 -
Java “+”运算符进行字符串连接和 StringBuffer/StringBuilder 对象的 append 方法连接字符串性能分析
字符串是 Java 程序中最常用的数据结构之一。在 Java 中 String 类已经重载了"+"。也就是说,字符串可以直接使用"+"进行连接。在 Java 中提供了一个StringBuilder 类(这个类只在 J2SE5 及以上版本提供,以前的版本使用 StringBuffer 类),这个类也可以起到"+"的作用。那么我们应该用哪个呢?...原创 2020-05-05 16:23:10 · 401 阅读 · 0 评论 -
Java final、finally、finalize
final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。 finally:异常处理语句结构的一部分,表示总是执行。 finalize:Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,当该方法 被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对 象“死亡”,...原创 2020-05-05 15:52:32 · 81 阅读 · 0 评论 -
Java throw 和 throws
throwthrow 语句用在方法体内,表示抛出异常,由方法体内的语句处理。 throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。 throwsthrows 语句是用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。 throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需...原创 2020-05-05 15:48:03 · 213 阅读 · 0 评论 -
Java error 和 exception
Error 类和 Exception 类的父类都是 Throwable 类,他们的区别如下。 Error 类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。 Exception 类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该...原创 2020-05-05 15:31:38 · 93 阅读 · 0 评论 -
Java异常机制中finally
Java异常机制有这么一个原则:如果在 catch 中遇到了 return 或者异常等能使该函数终止的话 那么有 finally 就必须先执行完 finally 代码块里面的代码然后再返回值。也就是说如果finally里面有返回语句,那么catch里面的返回语句就不会执行了,如下代码:public int getNumberResult(){ try...原创 2020-05-05 15:24:13 · 176 阅读 · 0 评论 -
Java异常分类
按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeException。 只有 java 语言提供了 Checked 异常,Java 认为 Checked 异常都是可以被处理的异常,所以 Java 程序必须显式处理Checked 异常。如果程序没有处理 ...原创 2020-05-05 15:18:58 · 106 阅读 · 0 评论 -
Java重载(overload)和重写(override)的区别
重载(overload)和重写(override)方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态 性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为 重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方 法更好访问...原创 2020-05-05 15:13:54 · 248 阅读 · 0 评论 -
Lambda表达式使用局部变量的限制
结论Lambda可以没有限制地引用实例变量和静态变量。但局部变量必须显式声明为final,或事实上是final。换句话说,Lambda表达式只能引用指派给它们的局部变量一次。(注:实例变量可以被看作捕获最终局部变量this。)原因第一,实例变量和局部变量背后的实现有一个关键不同。实例变量都存储在堆中,而局部变量则保存在栈上。如果Lambda可以直接访问局部变量,而...原创 2020-04-19 14:59:15 · 2904 阅读 · 0 评论 -
深拷贝和浅拷贝
设计模式中有一个原型模式,使用的接口Cloneable ,给出个简单例子说明深拷贝和浅拷贝的区别。1. 浅拷贝public class Thing implements Cloneable { //定义一个私有变量 private ArrayList<String> arrayList = new ArrayList<>(); @Override pu...原创 2018-09-17 10:04:33 · 221 阅读 · 0 评论 -
浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
废话:最近在使用@ResponseBody时遇到一个问题,如下: //@ResponseBody @RequestMapping(value = "/reportFile/{reportId}/{fileFormat}", method = RequestMethod.GET) public void getReportFileToPortal(@PathVariable...转载 2018-07-27 10:56:13 · 1301 阅读 · 0 评论 -
String, StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。private final char value[];转载 2017-12-18 15:14:58 · 147 阅读 · 0 评论 -
Java 接口和抽象类的比较以及相关性 (转)
http://write.blog.csdn.net/postedit/41129935首先不懂什么是interface的可以参考这里http://blog.csdn.net/nvd11/article/details/18888415不过上面的博文只是简单介绍了interface的语法和用法. 对Interface的用途并没有介绍清楚. 本文就是1个补充.转载 2017-12-05 15:24:59 · 309 阅读 · 0 评论 -
Java关键字final、static使用总结(转)
在网上看到一篇关于static和final关键字总结的文章,看的很过瘾,忍不住抄过来,备份一下,声明:此文章纯属转载,不是原创,作者如果追究,请联系我,立刻删除!原文链接:http://blog.51cto.com/lavasoft/18771Java关键字final、static使用总结 一、final 根据程序上下文环境,Java关键字final有转载 2017-12-20 15:03:31 · 211 阅读 · 0 评论 -
Java初学者都必须理解的六大问题
问题一:我声明了什么!String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello worl转载 2017-12-19 19:15:15 · 401 阅读 · 0 评论