侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

JAVA基础

Java  /  管理员 发布于 3年前   189

一、类的初始化顺序
1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器
同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。

二、String
1 String a = "abc";
JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根据String类的equals(Object obj)方法的返回值来判断。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。

2 String a = "ab" + "cd";
常量值在编译期就被确定。上面代码等同于:String a = "abcd";只创建了一个对象。

3 String a = new String("abc")
JAVA虚拟机在堆中创建一个String对象,它的值(value)是在栈(字符串池)中创建的对象("abc"),所以,创建了两个对象。

三、属性覆盖
1、private修饰的变量不能被覆盖。

2、属性的值取父类还是子类并不取决于我们创建对象的类型,而是取决于我们定义变量的类型。(这点后面代码说明)

3、default,protected和public修饰符并不影响属性的覆盖。

4、静态变量和静态常量属于类,不属于对象,因此它们不能被覆盖。

5、常量可以被覆盖。

6、对于基本类型和对象,它们使用同样的覆盖规律。

四、final,finally和finalize的区别
1、final
(1)修饰变量:变量只能被赋值一次,变量可以在初始化块和构造器中初始化,不可以在静态代码块中初始化。static final修饰的变量可以在静态代码块中初始化,不可以在初始化快和构造器中初始化。
(2)修饰方法:方法不能被子类覆盖,但不影响被子类继承。
(3)修饰类:不允许被继承,类中所有方法不能被重写,但并不代表类中的属性值不能被改变。

2、finally用在try/catch语句中,并且附带着一个语句块,表示这段代码最终总是被执行。如果try语句块中有return、continue和break,则finally语句块是在这三个语句之前被执行。

3、finalize是一个方法,属于java.lang.Object类。是GC(garbage collector)运行机制的一部分,所有类都有这个方法。Object的任意子类都可以重写该方法,在其中释放系统资源或者做其他的清理工作,入关闭输入输出流。该方法在GC清理它所从属的对象是被调用,若果执行过程中抛出了无法捕获的异常(uncaught exception),GC将终止对该对象的清理,并且该异常会被忽略,直到下一次GC清理这个对象时,finalize方法被再次调用。
System.gc()如同Runtime.getRuntime().gc(),只是建议GC启动,但是GC启动并不一定,这取决于JAVA虚拟机。直到虚拟机停止运行,可能有些对象的finalize方法没被运行过。只有通过调用System类的另一个方法:
        runFinalizersOnExit(boolean value)才能保证对象的finalize方法在虚拟机停止运行前一定运行过。但该方法是不安全的,可能会造成finalize方法被误调用。

五、日期时间
1 DateFormat.parse(String source) String --> Date
2 DateFormat.format(Date date) Date --> String

六、switch
1 long,float,double,boolean,所有类型的对象(包括String类,排除byte,char,short,int四种基本类型对应的包装类)不能用于switch括号里表达式

七、位运算
1 移位运算符可用于byte,short,int,long,char,但不能用于float,double;

2 byte,short,char在移位前被自动转换为int,结果也为int。
1 << 35 = 1 << (35%32) = 1 << 3 = 8
100 >> 35 = 100 >> (35%32) = 100 >> 3 = 12

3 左移(<<)一位相当于 *2 ,有符号右移(>>) 相当于 /2 。

八、创建的方式
1 new
2 调用Class类的newInstance()方法,利用反射机制创建对象。


代码说明:
三、属性覆盖
2、
package test;

class ParentClass {
private String privateField = "Parent_private";
String frieddlyField = "Parent_friendly";
protected String protectedField = "Parent_protected";
public String publicField = "Parent_public";

public String getPrivateField() {
return this.privateField;
}
}

class SubClass extends ParentClass {
private String privateField = "Sub_private";
String frieddlyField = "Sub_friendly";
protected String protectedField = "Sub_protected";
public String publicField = "Sub_public";

public String getPrivateField() {
return this.privateField;
}
}

public class OverrideTest {
public static void main(String[] args) {
ParentClass subClass = new SubClass();

System.out.println(subClass.getPrivateField());
System.out.println(subClass.frieddlyField);
System.out.println(subClass.protectedField);
System.out.println(subClass.publicField);
}
}

运行结果:

Sub_private
Parent_friendly
Parent_protected
Parent_public


  • 上一条:
    PHP,安卓,UI,java,linux视频教程合集
    下一条:
    PHP+Ajax+JS实现多图上传
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • java正则表达式彻底研究(0个评论)
    • java正则表达式验证函数(0个评论)
    • MVC、MVP和MVVM分别是什么(0个评论)
    • java 单例模式(饿汉模式与懒汉模式)(0个评论)
    • 近期文章
    • 如何优雅处理async await错误推荐:await-to-js库(0个评论)
    • lodash工具库(0个评论)
    • 在Laravel项目中使用中间件方式统计用户在线时长功能代码示例(0个评论)
    • 在Laravel中构建业务流程模型(0个评论)
    • windows系统中安装FFMpeg及在phpstudy环境php7.3 + php-ffmpeg扩展的使用流程步骤(0个评论)
    • 在go语言中对浮点的数组、切片(slice)进行正向排序和反向排序(0个评论)
    • 在go语言中对整数数组、切片(slice)进行排序和反向排序(0个评论)
    • 在go语言中对字符串数组、切片(slice)进行排序和反向排序(0个评论)
    • 最新国内免注册ChatGPT体验站_ChatGPT镜像站访问链接地址2023/3/28持续更新(0个评论)
    • 在Laravel项目中的实现无密码认证之:发送邮箱链接授权(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2016-11
    • 2018-03
    • 2020-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客