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

JAVA基础

Java  /  管理员 发布于 5年前   355

一、类的初始化顺序
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个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

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

    侯体宗的博客