在公众号回复课程,免费获取JAVA全栈课程
作者 | 颜 群
公众号 | 大数据和人工智能技术
对于JVM而言,普通方法是在JVM【运行期】【静态】绑定的,而属性是在【编译期】【动态】绑定的,因此才会有 方法重写 和 属性覆盖 二者逻辑不一致的情况,这应该是根本原因。具体区别如下:
(1)当子类重写了父类的方法时,父类的引用会调用【子类】的重名方法;
(2)当子类和父类的属性重名时,父类的引用会调用【父类】的重名属性。
简言之:方法会被重写,但属性不会被覆盖。
JVM在首次加载类时,会对静态属性、静态块进行一次初始化,注意此时还没有产生对象。
之后,当类加载完毕后,才能实例化出对象,并在对象产生的同时对实例成员进行初始化。
(1)当继承和接口同时存在时,需要先继承,后实现
(2)Java中,类只能单继承,但接口可以多继承
例如,假设C是抽象类,I1和I2是接口。
正确写法:public class A extends C implements I1,I2{}
错误写法:public class A implements I1,I2 extends C {}
在JDK8.0以前,局部内部类在访问包含他的方法中的变量时,必须给这个变量加final修饰;但自JDK8.0以后,JDK会自动添加final,因此可以省略final,如图。
创建二维数组的时候,可以同时设置第一维长度和第二维长度,也可以只设置第一维长度,但不可以只设置第二维长度。
如下都是正确的:
int[][] arr = new int[10][10;
int[][] arr = new int[10][];
如下是错误的:
int[][] arr = new int[][10];
Java程序的第一行 可以写什么?
空行、注释或者package语句
java程序在使用相对路径,加载静态资源时:
(1)普通Java工程加载的是源文件src目录中的静态资源;
(2)Maven工程加载的是字节码目录target/classes中的静态资源;
(3)在编写源码时,程序中相对路径基于的“当前路径”是在源文件src目录下 ,不是在classes目录下。(也就是当前路径是基于A.java,而不是基于A.class)。
以上三条中,“(1)”和“(3)”是一致的,所以普通Java工程方式加载静态资源,没有什么,直接写相对路径就行;但“(2)”和“(3)”在读取路径时是矛盾的,因此Maven工程在加载静态资源时,就不能使用相对路径,只能使用绝对路径。可以点击超链接,看看这篇 -> Java程序使用Maven后无法运行?
对字符串的修改不频繁:用String。
对字符串的修改频繁,且字符串是全局变量或者需要多线程支持:用StringBuffer(线程安全)。
对字符串的修改频繁,且字符串是局部变量或者是单线程:用StringBuilder (非线程安全)。
在Java中只有值传递,并不存在“引用传递”。
所谓的“引用传递”,实际传递的是 引用地址的值。
初学者使用数组时,常犯的错:
int[] nums ;
nums = {3,1,2} ; ×
此种赋值方式,必须合并在一行:
int[] nums = {3,1,2}; √
Java中,3*0.3f的运算结果是:0.90000004
因为float是32位的,最多能够容纳下 2的32次方 个数字。
但float的小数,包含着无穷无尽个数字, 因此 2的32次方个位置 无法容纳全部小数,只能近似。既然是近似,就可能出现一些运算误差。
a = a + 2 和 a += 2 等价吗?不!
举个反例:
byte b,b1 = ... ;
b = b +b1 ; ×(编译时报错)
b += b1 √
用Java编写单例模式,一行代码就够了:
public enum Singleton{ INSTANCE; }
这也是众多大神推荐的写法
如果使用“记事本”编写java代码。并且在.java文件中有汉字,然后在Javac编译时出现了 错误提示“ 错误: 编码GBK的不可映射字符”
解决:将文件的编码改为ANSI码、或UTF-8后再试,如图。
提示:java采用的默认 字符编码集是unicode
不论你怎么学,编码都是很难彻底学懂的。然而从实际情况来看,学懂50%或者学懂80%,实际差别并不大。真正决定一个程序员能够走多远的,是他的思维能力。可以点击超链接,看看这篇 -> 编程初级和高手的区别,究竟在哪?
- 完 -
推荐阅读
▲
扫描上方二维码回复 「 课程 」
即可获得JAVA全栈教程合集
30+课程掌握 95% 的开发技能
在“大数据和人工智能技术”聊天对话框回复以下关键词,可获得相关信息哟
回复【资料】获取JAVA全栈视频的配套资料
回复【最新课程】获取一门尚未公开的高级课程(不定期更换)
回复【提问】获取免费答疑方式
回复【课程】获取JAVA全栈视频教程 + 配套资料
回复【软件】获取常用的开发软件(逐步完善)
回复【亿级源码】获取本号作者出版的《亿级流量Java高并发与网络编程实战》一书配套源码
回复【javase】获取JAVA基础视频教程
更多课程,逐步开放...
觉得有用,请点****在看 ↓↓↓
本文分享自微信公众号 - 大数据和人工智能技术(Big_Data-AI)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。