Java 变量

  • 1 变量概述
  • 2 变量声明
  • 3 变量赋值
  • 4 变量的作用域
    • 成员变量
    • 局部变量
      • 方法局部变量(方法内定义)
      • 方法参数变量(形参)
      • 代码块局部变量(代码块内定义)

1 变量概述

在程序运行过程中,其值可以发生变化的量。从本质上讲,变量是内存中的一小块区域。

Java是强类型(Strongly Typed)语言,强类型包含以下两方面的含义:

  • 所有的变量必须先声明、后使用
  • 指定类型的变量只能接受类型与之匹配的值。

2 变量声明

基本语法为:

DataType identifier;

或者:

DataType identifier = value;

其中identifier为标识符,也叫变量名称,遵循标识符命名规范。

3 变量赋值

初始化变量是指为变量指定一个明确的初始值。

初始化变量有两种方式:一种是声明时直接赋值。如:

int a = 1;

一种是先声明、后赋值。如:

String username;
username = "KiKi";

另外,多个同类型的变量可以同时定义或者初始化,但是多个变量中间要使用逗号分隔,声明结束时用分号分隔。如:

String username,address,phone,tel;    // 声明多个变量
int num1=12,num2=23,result=35;    // 声明并初始化多个变量

Remark:

  • 变量是类或者结构中的字段,如果没有显式地初始化,默认状态下创建变量并默认初始值为 0。
  • 方法中的变量必须显式地初始化,否则在使用该变量时就会出错

4 变量的作用域

根据作用域的不同,一般将变量分为不同的类型:成员变量和局部变量。

成员变量

Java的成员变量有两种,分别是全局变量和静态变量(类变量)。定义在方法体和语句块之外,不属于任何一个方法,作用域是整个类。

名称 修饰 访问 生命周期
全局变量(实例变量) static 修饰 对象名.变量名 只要对象被当作引用,实例变量就将存在
静态变量(类变量) static 修饰 类名.变量名 或 对象名.变量名 其生命周期取决于类的生命周期。类被垃圾回收机制彻底回收时才会被销毁

例如:

变量声明代码:

public class DataClass {String name; // 全局变量int age; // 全局变量static final String username = "KiKi"; // 静态变量static String userAddress = "China"; // 静态变量
}

测试类代码:

public class Test {public static void main(String[] args) {// 创建类的对象DataClass dc = new DataClass();// 对象名.变量名 调用全局变量System.out.println(dc.name);System.out.println(dc.age);// 对象名.变量名 调用静态变量System.out.println(dc.username);System.out.println(dc.userAddress);// 类名.变量名 调用静态变量System.out.println(DataClass.username);System.out.println(DataClass.userAddress);}
}

运行结果:

Remark:

nameage 显示了系统默认初始化的值,而且用 static final 修饰的变量必须赋予初始值。

局部变量

局部变量是指在方法或者方法代码块中定义的变量,其作用域是其所在的代码块。可分为以下三种:

方法局部变量(方法内定义)

从定义这个变量开始到方法结束这一段时间内有效。

public class Test{public static void main(String[] args) {int a = 1;if (a > 0) {int s = 2; // 声明一个 int 类型的局部变量System.out.println("s=" + s);System.out.println("a=" + a);}System.out.println("a=" + a); //如果输出s会报错}
}

上述代码中 int 类型的 a 的作用域是整个 main() 方法,而 int 类型的变量 s 的作用域是 if 语句的代码块内。如果在 if 方法外调用变量 s,则会报无法解析该变量的错误。

方法参数变量(形参)

在整个方法内有效。

public class Test {public static void testFun(int n) {System.out.println("n=" + n);}public static void main(String[] args) {testFun(3);}
}

在上述实例中定义了一个 testFun() 方法,该方法中包含一个 int 类型的参数变量 n,其作用域是 testFun() 方法体内。当调用方法时传递进了一个参数 3,因此其输出控制台的 n 值是 3

代码块局部变量(代码块内定义)

从定义这个变量开始到代码块结束这一段时间内有效。

代码块局部变量常用于 try catch 代码块中,成为异常处理参数变量。

异常处理参数变量的作用域是在异常处理块中,该变量是将异常处理参数传递给异常处理块,与方法参数变量类似。

public class Test {public static void test() {try {System.out.println("Hello!Exception!");} catch (Exception e) { // 异常处理块,参数为 Exception 类型e.printStackTrace();}}public static void main(String[] args) {test();}
}

在上述实例中定义了异常处理语句,异常处理块 catch 的参数为 Exception 类型的变量 e,作用域是整个 catch 块。

Remark:

  • 局部变量在使用前必须被主动初始化值。
  • 成员变量如果没有赋值, 在使用的时候, 会给一个该类型的默认值。
  • 局部变量去过没有赋值, 在使用的时候, 会抛出异常。

【Java知识点总结】Java 变量相关推荐

  1. 给Java新手的一些建议——Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  2. java 解析tgw_给Java新手的一些建议——Java知识点归纳(Java基础部分)

    1. JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可.不过对于一个有着3年以上Java经验的资深开发者来说,不 ...

  3. 2022 Java 知识点总结

    2022 Java知识点总结 Java Code 类加载 类加载机制 双亲委派机制 类的初始化 反射 反射的实现方式和原理 获取反射中的 Class 对象 获取构造函数 获取属性 获取方法 获取Cla ...

  4. Java知识点总结(JavaIO-合并流类)

    Java知识点总结(JavaIO- 合并流类 ) @(Java知识点总结)[Java, JavaIO] [toc] 合并流的主要功能是将两文件的内容合并成一个文件 public class Demo1 ...

  5. Java知识点总结(JavaIO- System类对IO的支持与Scanner类 )

    Java知识点总结(JavaIO- System类对IO的支持与Scanner类 ) @(Java知识点总结)[Java, JavaIO] [toc] System类 public class Dem ...

  6. Java知识点总结(JDBC-封装JDBC)

    Java知识点总结(JDBC-封装JDBC) @(Java知识点总结)[Java, JDBC] 封装JDBC src目录下新建一个db.properties文件,用于封装数据库连接信息 把获取数据库连 ...

  7. Java知识点总结(Java容器-EnumSet)

    Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...

  8. java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)

    J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...

  9. Java知识点总结(注解-内置注解)

    Java知识点总结(注解-内置注解) @(Java知识点总结)[Java, 注解] @Override 定义在java.lang.Override 中,此注释只适用于修饰方法,表示一个方法声明打算重写 ...

  10. Java知识点总结(Java容器-ArrayList)

    Java知识点总结(Java容器-ArrayList) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaList] ArrayList 底层实现是数组,访 ...

最新文章

  1. Tomcat学习总结(3)——Tomcat优化详细教程
  2. python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本
  3. python学习-类(类方法、实例方法、静态方法)
  4. Hadoop精华问答 | NameNode的工作特点
  5. UNIX网络编程——进程间通信概述
  6. Trunk Vlan
  7. linux线程wait和sleep,java多线程 sleep()和wait()的区别
  8. zoj 3870 Team Formation
  9. 安卓中fragment的使用全解
  10. 研发管理:该吵架就要吵架
  11. incaseformat蠕虫病毒样本分析
  12. word2016插入公式技巧2
  13. UI自动化测试---针对C#项目使用Visual studio CodedUI框架
  14. 平面中圆与矩形相交判定
  15. 修改window本地hosts文件,修改域名指向
  16. 这么清晰的帮助手册,AppCube 二次体验
  17. web页面设计中使用阿里字体(包含图标)
  18. ltoa() 、itoa()函数实现
  19. Java代码审计(7)Sql注入审计
  20. Python文件类型识别——python-magic

热门文章

  1. MySQL:使用SQL语句删除所有索引
  2. Auto.js修改QQ语音+破解闪照
  3. 9.3.2 自然连接(NATURAL JOIN)
  4. Prim算法的具体实现
  5. onKeyUp方法简介
  6. OKHttp源码分析2 - Request的创建和发送
  7. 模拟退火算法——仿真篇
  8. 您的第一个工程项目 [原创iOS开发-Xcode教程]
  9. 也谈ibm aix jfs2
  10. face to face