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. 日期转换工具类 CommUtil.java

    package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...

  3. [activiti] Activiti 5.18 的Mybatis版本依赖问题

    测试activiti 是查询Task时抛出一个异常: org.apache.ibatis.exceptions.PersistenceException: ### Error querying dat ...

  4. [摘]Hibernate查询事务必要性

    背景: 添加事务与否都不影响Hibernate的查询操作. 问题: 查询操作是否有必要添加事务? 答案1: Hibernate官方手册上建议任何操作(增删改查)都需要添加事务. 答案2: robbin ...

  5. Struts 1.3(第一例) - Login

    本想跳过直接学Struts 2的,想想,还是先学Struts 1,万一到时去那个公司,人家用的是1,那还是要学,以及了解下1与2的区别在哪里. 上例子,很简单的一个网上login例子,再思考下Stru ...

  6. ajaxForm笔记

    <script src="Scripts/jquery.form.js" type="text/javascript"></script> ...

  7. 【Hadoop需要的Jar包】Hadoop编程-pom.xml文件

    JDK版本的要求 Hadoop 2.7 以及之后的版本,需要JDK 7: Hadoop 2.6 以及之前的版本,支持JDK 6: 对于Hadoop1.x.x版本,只需要引入1个jar: hadoop- ...

  8. Python 创建函数和代码重用

    1. cat func.py #!/usr/bin/python def func(): print "hello,this is a function" def func2(): ...

  9. Softerra LDAP Browser 使用及配置 有图有真相

    Softerra LDAP Browser 4.5 我使用Softerra LDAP Browser的目的,是为了查找公司的人员信息.网上关于Softerra LDAP Browser配置太少了,所以 ...

  10. ubuntu双网卡bonding配置(转)

    1.安装软件 apt-get install ifenslave 2.修改配置文件 /etc/network/interfaces auto lo iface lo inet loopback ifa ...