JAVA

一、成员变量 和 局部变量区别:
1、作用域不同:
      成员变量的作用域在整个类内部都是可见的;
      局部变量的作用域仅限于定义它的方法。

2、初始值不同:
      Java会给成员变量一个初始值;
      Java不会给局部变量赋予初始值。

二、 Java中的static使用之静态变量
      Java中被static修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名进行访问,也可以使用方法名进行访问。鉴于它们的特殊性,更推荐使用类名访问。
      Java中的static使用静态方法
      1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
      2、在普通成员方法中,可以直接访问同类的非静态变量和静态变量。
      3、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

      Java中的static使用之静态初始化块

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量


package com.dong;
public class Telephone {
int num1;
int num2;
static int num3;
public Telephone(){
num1 = 91;
System.out.println("通过构造方法为变量num1赋值.");
}
{//初始化块
num2 = 72;
System.out.println("通过初始化块为变量num2赋值.");
}

static{//静态初始化块
num3 = 33;
System.out.println("通过静态初始化块为静态变量num3赋值.");
}
public static void main(String[] args){
Telephone phone = new Telephone();
System.out.println("num1:"+phone.num1);
System.out.println("num2:"+phone.num2);
System.out.println("num3:"+num3);
Telephone phone2 = new Telephone();
}
}

结果为:

通过静态初始化块为静态变量num3赋值.
通过初始化块为变量num2赋值.
通过构造方法为变量num1赋值.
num1:91
num2:72
num3:33
通过初始化块为变量num2赋值.
通过构造方法为变量num1赋值.

通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

三、面向对象特点:封装、继承、多态。
      封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对类内部隐藏信息的访问,修改。

      Java中的内部类

package com.dong;
public class Outer {
private String name = "dong";
public class Inner{
private String name = "dong2";

public void show(){
System.out.println("访问内部类中的name:"+name);
System.out.println("访问外部类中的name:"+Outer.this.name);
}
}
public static void main(String[] args){
Outer out = new Outer();
Inner in = out.new Inner();
in.show();
}
}

结果为:

访问内部类中的name:dong2
访问外部类中的name:dong

定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即: 内部类 对象名 = 外部类对象.new 内部类( );

编译上面的程序后,会发现产生了两个 .class 文件
   
   
JAVA - dong18765203770 - zhaoqidong的博客
第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样: 外部类名$内部类名.class

      Java中的静态内部类

package com.dong;

public class Outer {
private static String name = "dong";
private int id = 12;

public static class Inner{
private String name = "dong2";
public void show(){
System.out.println("访问外部类中的id:"+new Outer().id);
System.out.println("访问内部类中的name:"+name);
System.out.println("访问外部类中的name:"+Outer.name);
}
}

public static void main(String[] args){
Inner in = new Inner();
in.show();
}
}

结果为:

访问外部类中的id:12
访问内部类中的name:dong2
访问外部类中的name:dong

 创建静态内部类的对象时,不需要外部类的对象,可以直接创建  内部类 对象名= new 内部类();


Java中的方法内部类
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
   
   
JAVA - dong18765203770 - zhaoqidong的博客


  

尽管对象的内容相同,对象的应用却不同,==和!=比较的就是对象的引用。
equals()方法比较对象的实际内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值