【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),类就是用来体现事物的. 属性:类中的 ...
随机推荐
- Windows Phone 十九、罗盘
磁力计概述 拥有磁力计硬件支持的设备可以根据磁力计来确定相对于北极的角度 磁力计的访问 API 定义在 Compass 类中 调用方式和加速计类似 <Grid Background=" ...
- sqlserver日志管理(转载)
sql 在使用中每次查询都会生成日志,但是如果你长久不去清理,可能整个硬都堆满哦,笔者就遇到这样的情况,直接网站后台都进不去了.下面我们一起来学习一下如何清理这个日志吧 SQL2005清空删除 ...
- 基于spring+quartz的分布式定时任务框架
问题背景 我公司是一个快速发展的创业公司,目前有200人,主要业务是旅游和酒店相关的,应用迭代更新周期比较快,因此,开发人员花费了更多的时间去更=跟上迭代的步伐,而缺乏了对整个系统的把控 没有集群之前 ...
- 对于前端JS、Html、CSS的大小、位置是否影响网站的相应时间
1.页面中大量的注释代码.空行会影响页面的加载速度 尽量去除打断的注释代码,及空行:尽可能的使用压缩后的JS.CSS文件,太小的文件没必要压缩 2.有人说CSS样式放在页面的开头,JS文件放在页面的结 ...
- Mysql中的少用函数
1.查询时需要转换类型,大多发生在数字和字符串.时间和字符串之间 Mysql提供了两个个类型转换函数:CAST和CONVERT CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另 ...
- C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0
C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0
- qt qml 刮刮卡效果
用canvas+mouseArea实现的刮刮卡效果. 表层是一层色彩,用手指划开,可看到下面的文字Lisence: MIT, 请保留本文档说明Author: surfsky.cnblogs.com 2 ...
- hadoop 安装教程 转载
hadoop2.2安装教程:http://www.aboutyun.com/thread-7684-1-1.html hadoop2.X使用手册1:通过web端口查看主节点.slave1节点及集群运行 ...
- 应用ERP系统与企业的关系
随着ERP系统的深入发展,越来越多的企业开始实施ERP,ERP实施是借用一种新的管理模式来改造原企业旧的管理模式,是先进的.行之有效的管理思想和方法.ERP软件在实际的推广应用中,其应用深度和广度 ...
- json pickle time
多层装饰器: 字符串格式化: 当字符串格式化时 , %% 生成器 使用函数创造的 yield递归模块PY:模块其他:类库 先导入 后使用 自定义模块内置模块第三方模块为什么要有模块 将代码归类模块的内 ...