java 重新学习 (三)
一.静态初始化块和声明静态成员变量时所指定的初始化值都是该类的初始化代码,他们的执行顺序与源程序中的排列顺序相同。
static int a = 9 ;
static{
a = 6;
}
public static void main(String[] args) {
System.out.println(TestRe.a);
//输出结果为6
} static{
a = 6;
}
static int a = 9 ;
public static void main(String[] args) {
System.out.println(TestRe.a);
//输出结果为9
}
二.== 两个变量时基本类型变量,且都是数值型,则只要两个变量的值相等,返回结果就相等。引用类型指向同一个对象,==才会返回true。
三.new String("hello");JVM会先使用常量池来存储“hello”的直接量,在调用String类的构造器来创建一个新的String的对象,新创建的String对象被保存在堆内存中,
换句话说,new String("hello"); 一共产生了两个字符串对象。
四。常量池专门用于管理在编译时被确定并被保存在已编译的.class文件中的一些数据,它包括了关于类,方法,接口中的常量,还包括字符串常量。
五。单列类,使用一个类变量来缓存曾经创建的实例,对构造器使用private修饰,隐藏该构造器。提供一个静态方法用于返回当前对象。
六。final修饰的实例变量,要么在定义该实例变量时指定初始值,要么在普通初始化块或构造器中为该实例变量指定初始值。
final修饰的类变量,要么在定义该类变量时初始化值,要么在静态代码块中指定初始值。
七。final 修饰引用变量值保证这个引用变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变
eg final int [] p = new int{1,3,4}; p[2] = 6; 此种写法合法。但 不可 p = null;
八。final修饰的变量不可被重写。final修饰的类不能有子类。
九、abstract修饰类,表示该类只能被继承。修饰方法表明这个方法必须由子类实现,所以此方法不能用private修饰。abstract不能用于修饰成员变量,不能用于修饰局部变量,不能修饰构造器。final 修饰的类不能继承,final修饰的方法不能被重写,所以final和abstract永远不可能一起使用。
十。接口可多继承。java8以上可以有默认方法,类方法。默认控制修饰符为public,指定访问控制修饰符也只能我public。
十一。接口可以有成员变量(只能是静态常量),方法(只能是抽象实例方法,类方法,默认方法和私有方法);
十二。接口和抽象类都不能实例化,他们位于继承树的顶端。用于被其他类实现和继承。
接口和抽象类都包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
java 重新学习 (三)的更多相关文章
- Java开发学习(三十六)----SpringBoot三种配置文件解析
一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...
- Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类
一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...
- Java基础学习(三)—面向对象(上)
一.理解面向对象 面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...
- JAVA多线程学习- 三:volatile关键字
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...
- Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析
一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...
- java web 学习三(Tomcat 服务器学习和使用2)
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- JAVA NIO学习三:NIO 的非阻塞式网络通信
紧接着上一章,我们继续来研究NIO,上一章中我们讲了NIO 中最常见的操作即文件通道的操作,但实际上NIO的主要用途还是在于网络通信,那么这个时候就会涉及到选择器,这一章我们就会对其进行讲解操作. 一 ...
- Java多线程学习(三)---线程的生命周期
线程生命周期 摘要: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞 ...
- Java反射学习三
反射与数组 java.lang.Array类提供了动态创建和访问数组元素的各种静态方法. 例程ArrayTester1类的main()方法创建了一个长度为10的字符串数组,接着把索引位置为5的元素设为 ...
- Java开发学习(三)----Bean基础配置及其作用范围
一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...
随机推荐
- golang的数据类型之字符类型
字符类型使用细节 1)字符常量是用单引号('')括起来的单个字符.例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9' 2) Go中允许使用转 ...
- 原生AJAX的封装
/**调用AJAX ajaxPlug.openajax({ url: "./TestXHR.aspx", //请求地址 type: "POST", //请求方式 ...
- docker--数据持久化之Data Volume
使用mysql为例 查看docker hub官方的mysql image 的dockerfile,有这一行:VOLUME /var/lib/mysql -v给volume创建别名 [root@loca ...
- SpringBoot-技术专区-实战方案-应用监控线程池
背景 废话不多说,做这个监控的背景很简单,我们的项目都是以spring boot框架为基础开发的,代码里所有的异步线程都是通过@Async标签标注的,并且标注的时候都是指定对应线程池的,如果不知@As ...
- css3中的scroll-behavior属性
scroll-behavior属性 当用户手动导航或者 CSSOM scrolling API 触发滚动操作时,CSS 属性 scroll-behavior 为一个滚动框指定滚动行为,当用户通过鼠标滑 ...
- SSM+Maven使用PageHelper插件分页
官方网站: https://pagehelper.github.io/docs/howtouse/#2-%E9%85%8D%E7%BD%AE%E6%8B%A6%E6%88%AA%E5%99%A8%E6 ...
- Linux系统测试端口连通性的方法
Linux系统测试端口连通性的方法 有四种常用方法:1. telnet 方法2. wget 方法3. ssh 方法4. curl 方法 下面一一介绍. 1. telnet用法: telnet ip p ...
- Codeforces 1183H DP 计算子序列数目
题意及思路:https://blog.csdn.net/mmk27_word/article/details/93999633 第一次见这种DP,有点像退背包的思想,如果发现有可能因为字母相同和前面算 ...
- ORA-20782: Creating GGS_DDL_RULES
在11g数据库上安装goldengate,运行@ddl_setup.sql时有如下错误 ERROR at line 1: ORA-20782: Creating GGS_DDL_RULES table ...
- Delphi 字符串函数StrUtils单元AnsiLeftStr、AnsiRightStr、AnsiMidStr、AnsiContainsStr、AnsiContainsText、AnsiStartsStr、AnsiStartsText、AnsiEndsStr、AnsiEndsText、AnsiReplaceStr、AnsiReplaceText、AnsiResemblesText...
引用单元 StrUtils 非 SysUtilsAnsiLeftStr.AnsiRightStr.AnsiMidStr.AnsiContainsStr.AnsiContainsText.AnsiSta ...