1.static关键字 【在二十二讲视频中30分钟开始讲授】

2.static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。如果一个成员变量是static的,那么我们可以通过类名.成员变量的方式来使用它(java推荐使用这种方式)。

package com.cl.abstracttest;

public class StaticTest {

    public static void main(String[] args){
MyStatic mystatic = new MyStatic();
MyStatic mystatic2 = new MyStatic();
mystatic.a = 10;
System.out.println(mystatic2.a);
}
} class MyStatic
{
int a;
}

结果为:0


将int a 改为 static int a 结果就变成了10

 
package com.cl.abstracttest;

public class StaticTest {

    public static void main(String[] args){

        MyStatic mystatic = new MyStatic();
MyStatic.a = 10;//直接用类名.成员变量方式
System.out.println(mystatic.a); }
} class MyStatic
{
static int a;
}

3.static修改方法:static修饰的方法叫做静态方法。对于静态方法来说,可以使用类名.方法名的方式来访问

package com.cl.staticandfinal;

public class StaticTest2 {

    public static void main(String[] args) {
/*方法一
MyStatic2 s = new MyStatic2();
s.output();*/ //方法二
MyStatic2.output();//需要将方法变成static
}
} class MyStatic2{
public static void output(){
System.out.println("output");
}
}

4.静态方法只能继承,不能重写(Override)。子类不能重写父类方法,可以重载父类方法

package com.cl.staticandfinal;

public class StaticTest3 {
public static void main(String[] args) {
M m = new N();
m.output();
} } class M
{
public static void output(){
System.out.println("M");
}
}
class N extends M
{
public static void output(){
System.out.println("N");
}
}
输出结果为:M
如果把
 M m = new N();改为 N m = new N();结果就是N

5.final关键字:final可以修饰属性、方法、类。

6.final修饰类:当一个类被final所修饰时,表示该类是一个终态类,即不能被继承。

7.final修饰方法:当一个方法被final所修饰时,表示该方法是个终态方法,即不能被重写(Overried)

package com.cl.staticandfinal;

public class FinalTest2 {
public static void main(String[] args) {
H h = new H();
h.output();
} }
class G
{
public final/*加了final修饰*/ void output(){ System.out.println("G");
}
}
class H extends G
{
public void output()//编译报错:Cannot override the final method from G
{
System.out.println("H");
}
}

8.final修饰属性:当一个属性被fina所修饰时,表示该属性不能被改写。

package com.cl.staticandfinal;

public class FinalTest3 {

    public static void main(String[] args) {
People people = new People();
people.age = 20;//age这里会编译错误The final field People.age cannot be assigned
}
}
class People
{
final int age = 10;
}

9.当final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化(比如说不能从10变为20),如果final修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。

package com.cl.staticandfinal;

public class FinalTest3 {

    public static void main(String[] args) {
People people = new People();
people.address = new Address();//这里会编译错误The final field People.address cannot be assigned
people.address.name="shanghai";//这里不会报错 }
}
class People
{
final Address address = new Address();
} class Address{ String name = "beijing";
}

10.

Java SE 第二十三讲----static关键字and final关键字的更多相关文章

  1. Java SE 第二十四讲----static与final使用陷阱关键字

    1.对于final类型成员变量,一般来说有两种赋值方式: a)在声明final类型的成员变量时就附上初值 package com.cl.staticandfinal; public class Fin ...

  2. Java SE 第二十二讲----接口interface

    1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...

  3. Java SE 第二篇

    二.  Java SE 第二篇 1.  Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...

  4. “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. “全栈2019”Java多线程第二十六章:同步方法生产者与消费者线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. “全栈2019”Java多线程第二十五章:生产者与消费者线程详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. “全栈2019”Java多线程第二十四章:等待唤醒机制详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. unity, eulerAngle

    unity中欧拉角规定如下: A rotation that rotates euler.z degrees around the z axis, euler.x degrees around the ...

  2. Win10 64位安装SQL2000(个人版)

    默认Win10上是不允许安装SQL2000的,毕竟SQL2000已经是10多年前的老软件了,但是因为它成熟稳定,相比SQL2005,SQL2008R2,SQL2012,SQL2014,体积要小的多,所 ...

  3. Maven最佳实践:版本管理

    什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基本用 ...

  4. R(二): http与R脚本通讯环境安装

    结合实际的工作环境,在开始R研究的时候,首先着手收集的就是能以Web方式发布R运行结果的基础框架,无耐的是,R一直以来常使用于个人电脑的客户端程序上,大家习惯性的下载R安装包,在自己的电脑上安装 -- ...

  5. 【oracle】 linux 下oracle 启动监听错误

    Message 1070 not found; No message file for product=network, facility=TNSTNS-12545: Message 12545 no ...

  6. MyBatis java and MySql local variables

    <insert id="create" parameterType="models.entities.CategoryEntity"> set @c ...

  7. Android启动画面实现

    每个Android应用程序启动之后都会出现一个Splash启动界面,显示产品LOGO.公司LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...

  8. C#限制程序只能运行一個实例 (防多开)

    //方法一:只禁止多个进程运行 using System; using System.Collections.Generic; using System.Windows.Forms; namespac ...

  9. RDO部署openstack(1)

    1. 安装系统CentOS 6.5   2. 网络配置   Eth0 设置 # cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ON ...

  10. JS使用百度地图API

    尚未整理: <script type="text/javascript"> var map = new BMap.Map("dituContent" ...