【Java知识点总结】Java 变量
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:
name
和age
显示了系统默认初始化的值,而且用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 变量相关推荐
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- java 解析tgw_给Java新手的一些建议——Java知识点归纳(Java基础部分)
1. JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可.不过对于一个有着3年以上Java经验的资深开发者来说,不 ...
- 2022 Java 知识点总结
2022 Java知识点总结 Java Code 类加载 类加载机制 双亲委派机制 类的初始化 反射 反射的实现方式和原理 获取反射中的 Class 对象 获取构造函数 获取属性 获取方法 获取Cla ...
- Java知识点总结(JavaIO-合并流类)
Java知识点总结(JavaIO- 合并流类 ) @(Java知识点总结)[Java, JavaIO] [toc] 合并流的主要功能是将两文件的内容合并成一个文件 public class Demo1 ...
- Java知识点总结(JavaIO- System类对IO的支持与Scanner类 )
Java知识点总结(JavaIO- System类对IO的支持与Scanner类 ) @(Java知识点总结)[Java, JavaIO] [toc] System类 public class Dem ...
- Java知识点总结(JDBC-封装JDBC)
Java知识点总结(JDBC-封装JDBC) @(Java知识点总结)[Java, JDBC] 封装JDBC src目录下新建一个db.properties文件,用于封装数据库连接信息 把获取数据库连 ...
- Java知识点总结(Java容器-EnumSet)
Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...
- java webservice接口开发_给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...
- Java知识点总结(注解-内置注解)
Java知识点总结(注解-内置注解) @(Java知识点总结)[Java, 注解] @Override 定义在java.lang.Override 中,此注释只适用于修饰方法,表示一个方法声明打算重写 ...
- Java知识点总结(Java容器-ArrayList)
Java知识点总结(Java容器-ArrayList) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaList] ArrayList 底层实现是数组,访 ...
最新文章
- Tomcat学习总结(3)——Tomcat优化详细教程
- python利用scapy模块写一个TCP路由追踪和扫描存活IP的脚本
- python学习-类(类方法、实例方法、静态方法)
- Hadoop精华问答 | NameNode的工作特点
- UNIX网络编程——进程间通信概述
- Trunk Vlan
- linux线程wait和sleep,java多线程 sleep()和wait()的区别
- zoj 3870 Team Formation
- 安卓中fragment的使用全解
- 研发管理:该吵架就要吵架
- incaseformat蠕虫病毒样本分析
- word2016插入公式技巧2
- UI自动化测试---针对C#项目使用Visual studio CodedUI框架
- 平面中圆与矩形相交判定
- 修改window本地hosts文件,修改域名指向
- 这么清晰的帮助手册,AppCube 二次体验
- web页面设计中使用阿里字体(包含图标)
- ltoa() 、itoa()函数实现
- Java代码审计(7)Sql注入审计
- Python文件类型识别——python-magic