【java基础】成员变量和局部变量
成员变量和局部变量
package object; /**
* 成员变量和局部变量
*
* */
public class VariableTest { //成员变量
public static String staticname = "类属性";
public String nostaticname = "实例属性"; //没有初始化的成员变量
public static String staticname1;
public String nostaticname1; //定义一个方法
public void info(){
//在方法中定义一个局部变量i
//int i;
//直接输出是输出不出来的,因为没有初始化
//System.out.println(i);
//定义一个局部变量i并初始化
int i = 10;
//输出i
System.out.println(i);
} //定义了一个静态的方法
public static void infos(){
int i = 20;
System.out.println(i);
} public static void main(String[] args) {
/*第一问:类属性和实例属性的范围一样吗?*/
//在没创建实例之前 可以调用类属性,但不能调用实例属性
System.out.println(VariableTest.staticname);//结果:类属性
//实例化对象之后,就可以调用实例属性了
VariableTest vt = new VariableTest();
System.out.println(vt.nostaticname);//结果:实例属性
/*--- 结论:在成员变量中,类属性的范围比实例属性大一点 ---*/ System.out.println("----------"); /*第二问:成员变量需要显性初始化吗?*/
//直接调用没有初始化的类属性
System.out.println(VariableTest.staticname1);//结果:null
//用实例化对象调用没有初始化的实例属性
System.out.println(vt.nostaticname1);//结果:null
/*--- 结论:成员变量会自动隐性初始化,赋给变量一个默认值 ---*/ System.out.println("----------"); /*第三问:如果用实例化后的对象去调用类属性会怎么样?*/
//vt.staticname;
//这样会报错
//Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration
//翻译:语法错误,插入“变量声明符”来完成局部变量声明
/*为什么会报错。一开始我以为是因为eclipse出错了
*后来我直接用文本文档重写了一个test
*编译文件后,报不是语句的错,然后我又试了一下
*VariableTest.staticname
*也是报错,说明这种写法是不正确的,具体为什么有待研究*/
vt.staticname = "改变了的类属性";
//如果同时给类属性赋值,就不会报错...有警告
//The static field Variable Test.static name should be accessed in a static way
//翻译:静态字段变量测试。静态的名字应该在一个静态方法访问
System.out.println(vt.staticname);//结果:改变了的类属性
//这样就不会报错,但是会有警告,同上↑
/*结论:用实例化后的对象调用类属性,格式正确的情况下,是可以调用的,但有警告
*通过对象调用类属性,同样可以改变类属性的值*/ System.out.println("----------"); //定义在方法中的局部变量
/*第四问:定义在方法中的局部变量,出了方法还能访问吗?*/
//调用方法
vt.info();//结果:10
//现在还能用info中的i吗?
//System.out.println(i);
//报错:i cannot be resolved to a variable
//翻译:i 不能转换成一个变量
/*结论:定义在方法中的局部变量,出了方法就不能被访问了*/ System.out.println("----------"); //定义在代码块中的局部变量
/*第五问:定义在代码块中的局部变量,出了代码块还能访问吗?*/
{
int j = 11;
System.out.println(j);//结果:11
}
//出了代码块
//System.out.println(j);
//同样报错,内容与上面的一样
/*定义在代码块中的局部变量,出了代码块就不能访问了*/ System.out.println("----------"); //后续:一个静态方法
infos();//结果:20
//这样依然报错
//System.out.println(i); }
}
package object; /**
* 局部变量覆盖成员变量
* */
public class VariableCover { /*当实例变量与方法中的局部变量同名时,
*局部变量的值会覆盖实例变量*/
//定义实例变量
public String city = "合肥";
private static String citys = "滁州";
//定义一个方法
public void function(){
String city = "蚌埠";
//输出
//方法中的同名局部变量会覆盖实例变量
System.out.println(city);//结果:蚌埠
//要想调用实例变量,可以用this
System.out.println(this.city);//结果:合肥
} public static void main(String[] args) {
String citys = "南京";
//方法中的同名局部变量会覆盖实例变量
System.out.println(citys);//结果:南京
//可以通过类名调用被覆盖的类属性
System.out.println(VariableCover.citys);//结果:滁州 String city = "上海";
System.out.println(city);//结果:上海
//这样也可以
System.out.println(new VariableCover().city);//结果:合肥
new VariableCover().function();
}
}
/*
文章是我从我的CSDN博客里考过来的,因为那边用的不习惯,比较乱,没有这边纯粹...虽然有些功能是挺好的...全转过来之后,那边就废弃了....
*/
【java基础】成员变量和局部变量的更多相关文章
- Java基础-成员变量与局部变量
Java基础-成员变量与局部变量 1.什么是成员变量与局部变量? public class Student { String name; int high; public void stu ...
- java中成员变量,局部变量,静态变量的辨析
转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...
- java 线程---成员变量与局部变量
关于成员变量与局部变量: 如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成员变量的改变会影响到另一个线程) . 如果一个变量是局 ...
- Java中成员变量和局部变量的区别
java面向对象过程中,最基本的两类变量就是成员变量和局部变量 成员变量是写在类中并且写在方法外部,一般写在每个类的头部,用于初始化或者方法操作,作用域是整个类被实例化到被销毁,中间变量都可以被外部方 ...
- [ 转载 ] Java中成员变量 和局部变量
java语言支持的变量类型 类变量:独立于方法之外的变量,用 static 修饰. 局部变量:类的方法中的变量. 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰. publi ...
- java中成员变量和局部变量在内存中的分配
对于成员变量和局部变量:成员变量就是方法外部,类的内部定义的变量:局部变量就是方法或语句块内部定义的变量.局部变量必须初始化. 形式参数是局部变量,局部变量中基础数据类型的引用和值都存储在栈中,对象引 ...
- Java:成员变量、局部变量和静态变量
梳理一下: 根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量. 成员变量(俗称全局变量):在类里定义的变量.又分为实例变量和类变量(也成为静态变量). 实例变量:不以static修饰, ...
- 第3章 Java语言基础----成员变量与局部变量
在对局部变量进行赋值时,不能对非静态字段age进行静态引用,图1错误,加上static后图二正确,图3与图4类似,如下图所示: 图1图2 图3图4 2.成员变量times在类中定义,局部变量times ...
- JAVA:成员变量和局部变量的区别
1.作用于不同: 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类的内部都是可见的 2.初始值不同 JAVA会给成员变量一个初始值 JAVA不会给局部变量赋予初始值 3.在同一个方法中,不 ...
- [ 转载 ]Java:成员变量,局部变量,静态变量的区别
精简后方便自己理解. 成员变量 我们研究一个事物: 属性:外在特征:如身高,体重 行为:能做什么:如说话,打球. 在Java语言中,最基本的单位是类(class),类就是用来体现事物的. 属性:类中的 ...
随机推荐
- HashSet的故事----Jdk源码解读
Hash,我们在说HashMap的时候,已经知道Hash是散列,Map是映射了. 那么Set又是什么呢 ? 先来看看Set的翻译是什么 n. [数] 集合:一套:布景:[机] 装置 这里Set所取的含 ...
- Hash工具下载地址
因为经常要在非常用电脑使用,这里放一个链接,方便下载: http://files.cnblogs.com/files/cxun/Hash.zip HASH计算工具,可计算MD5.SHA-1.CRC32 ...
- iframe载入页面过程显示动画效果
http://www.xfeixiang.com/Bug/Detail/A2FD7EFFA8CA72F1
- Classic Shell 4.2.4 中文版已经发布
新版本支持 windows 10 操作系统了.请点击本博客页面左上角的链接下载. 博主的电脑最近也升级到 Windows 10 操作系统,用了没几天就出现打不开“开始”菜单.Edge.计算器等 App ...
- vbs 中文字符串
vbs 字符串包含中文字符,文件以UTF-8无BOM格式保存,就会出现“编译器错误: 未结束的字符串常量”错误,改以ANSI保存就没有这个问题
- Apache JMeter安装
Apache JMeter安装说明 1. 安装环境要求: Java版本 JMeter要求充分满足JVM1.3或更高. 操作系统 JMeter可以在当前任何一个已经部署了Java的操作系统上 ...
- Duilib 开发中的小经验
# duilib开发中收集的小代码 # ## 1 窗体创建 ## - 窗体多继承于 public WindowImplBase ,简单的定义几个函数就可以实现:拖曳caption移动(设置xml窗体的 ...
- [转]Linux进程间通信——使用消息队列
点击此处阅读原文 另收藏作者ljianhui的专栏初学Linux 下面来说说如何使用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处.有关命名管道的更多内容可以参阅我的另一篇文章:Linu ...
- AngularJS控制器
AngularJS 控制器 控制 AngularJS 应用程序的数据,控制器是常规的 JavaScript 对象. 1. angular.module(name, [requires], [confi ...
- 一个 div 实现扇形图(锥形渐变)
需要引用的js文件<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min ...