JavaSE-基础语法(二)

变量,常量

  1. 静态变量、常量

与类一起加载,在方法中可以直接进行调用。

public class Main{
	public static String name = "hello";
	public static final String NAME = "world";
	public static void main(String[] args){
		System.out.println(name);  //=> hello
		System.out.println(NAME);  //=> world
	}
}
  1. 成员变量、常量

当类被实例化的时候,成员变量就会在内存中分配空间,并初始化。

public class Main{
	public String name = "hello";
	public final String NAME = "world";
	public static void main(String[] args){
		Main m = new Main();
		System.out.println(m.name);  //=> hello
		System.out.println(m.NAME);  //=> world
	}
}
  1. 局部变量

作用域仅在当前的类方法中,当与类变量同名时优先。

public class Main{
	public static String name = "hello";
   	public static void main(String[] args) {
       		String name = "world";
        		System.out.println(name);  //=> world
   	}
}

成员变量、局部变量

成员变量与局部变量的区别

  1. 类中位置不同

局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)

成员变量:在方法与类之间

  1. 内存位置不同

局部变量:存在于栈中

成员变量:存在于堆中(方法区中的静态区)

  1. 生命周期不同

局部变量:方法执行完成后或者代码块执行完成后消失

成员变量:随着对象的创建而存在,随着对象的消失而消失

  1. 初始值

局部变量:没有初始值,使用之前一定要赋值否则会报错(The local variable xxx may not have been initialized)

成员变量:有初始值 String类型默认为null int类型默认为0…

public class VariableDemo {
    String name = "成员变量";

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

    public void show() {
        String name = "局部变量";
        System.out.println(name);
    }
}

我们看到输出的是show方法中定义的name变量,在使用变量时遵循的原则是就近原则,那么如何访问到成员变量name呢,Java中提供了this(表示调用对象本身)这个关键字用于访问成员变量。

public class VariableDemo {
    String name = "成员变量";

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

    public void show() {
        String name = "局部变量";
        System.out.println(this.name);
    }
}

---> 输出结果
成员变量

作用域问题

作用域的概述:变量的作用范围。

静态变量与局部变量的作用域说明

  1. 静态变量不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配存储空间。因此可以通过类名.变量名来访问静态变量。
  2. 局部变量的作用域与可见性为它所在的花括号内。

成员变量的作用域说明

  1. 同类的实例化对象的作用范围相同。当类被实例化的时候,成员变量就会在内存中分配空间,并初始化。直到类的实例化对象的生命周期结束时,成员变量的生命周期才结束。
作用域与可见性当前类同一package子类其他package
public
private×××
protected×
default××
  1. 重点说明:
  • protected:表名成员变量或方法对该类自身,与它在同一个包中的其他类,在其他包中的该类的子类都可见

  • default:表明该成员变量或方法只有自己和与其位于同一包内的类可见。

  • 可见性范围:public > protected > default > private

若父类与子类处于同一包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类处于不同的package内,则没有访问权限。

关键字

关键字含义
abstract表明类或者成员方法具有抽象属性
assert断言,用来进行程序调试
boolean基本数据类型之一,声明布尔类型的关键字
break提前跳出一个块
byte基本数据类型之一,字节类型
case用在switch语句之中,表示其中的一个分支
catch用在异常处理中,用来捕捉异常
char基本数据类型之一,字符类型
class声明一个类
const保留关键字,没有具体含义
continue回到一个块的开始处
default默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do用在do-while循环结构中
double基本数据类型之一,双精度浮点数类型
else用在条件语句中,表明当条件不成立时的分支
enum枚举
extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float基本数据类型之一,单精度浮点数类型
for一种循环结构的引导词
goto保留关键字,没有具体含义
if条件语句的引导词
implements表明一个类实现了给定的接口
import表明要访问指定的类或包
instanceof用来测试一个对象是否是指定类型的实例对象
int基本数据类型之一,整数类型
interface接口
long基本数据类型之一,长整数类型
native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new用来创建新实例对象
package
private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
return从成员方法中返回数据
short基本数据类型之一,短整数类型
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super表明当前对象的父类型的引用或者父类型的构造方法
switch分支语句结构的引导词
synchronized表明一段代码需要同步执行
this指向当前实例对象的引用
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
transient声明不用序列化的成员域
try尝试一个可能抛出异常的程序块
void声明当前成员方法没有返回值
volatile表明两个或者多个变量必须同步地发生变化
while用在循环结构中

关键字一律用小写字母标识,按其用途划分为如下几组。

  1. 用于数据类型。
    • 用于数据类型的关键字有 boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof。
  2. 用于语句。
    • 用于语句的关键字有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super。
  3. 用于修饰
    • 用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile。
  4. 用于方法、类、接口、包和异常。
    • 用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws。还有些关键字,如cat、 future、 generic、innerr、 operator、 outer、rest、var等都是Java保留的没有意义的关键字。另外,Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。

注意:用于修饰的关键字只能只能修饰成员变量,不能修饰局部变量。private和protected不能用来修饰类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值