【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),类就是用来体现事物的. 属性:类中的 ...
随机推荐
- 飞机大战编写以及Java的面向对象总结
面向对象课程完结即可编写一个简单的飞机大战程序.我觉得我需要总结一下 飞机大战中类的设计: 父类:FlyingObject(抽象类) 接口:Award .Enemy 子类:Hero.Bullet.Ai ...
- 二十四、JDK1.5新特性---泛型
由于本人认知有限,泛型在使用上没有太大压力,但是尚未具备详细介绍泛型的能力,因此本文只是粗略的描述泛型的相关知识,在以后的学习过程中会对这篇文章进行修改,希望这篇文章不会给读者带来迷惑,特此声明 什么 ...
- 中文乱码~Windows 7
1.安装匹配的中文语言包 2.安装中文字体
- python处理xml文件
参考:https://docs.python.org/2/library/xml.etree.elementtree.html 例子: <?xml version="1.0" ...
- ruby第一次实践 ”hello world“
下载ruby https://rubyinstaller.org/downloads/ 创建 ruby-version 写自己的版本 写Gemfile source: http://ruby.ta ...
- Java线程中带有返回值的线程Callable
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现C ...
- Ajax原理
- MVC2,MVC3,MVC4和MVC5的不同
现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...
- LLVM与Clang的概述及关系
LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time ...
- 不写完不让回家的JQuery的事件与动画
在这看不见太阳的小黑屋里,苦逼的一天又开始了 好了闲话我也就不扯了,接下来我就来说说我对jQuery事件和动画的理解吧!!! 还是得再扯两句,我们敬爱的,Y老师讲完了,jQuery事件和动画,对着我们 ...