- 浏览: 727180 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (419)
- 杂软粉墨 (2)
- 创意灵感 (3)
- 经验记录 (137)
- 开源轨迹 (2)
- sip-communicator (2)
- 闲侃杂谈 (8)
- 问题交流 (24)
- 概念模式 (32)
- 难点备案 (5)
- JwChat (1)
- 中国象棋 (1)
- 教育探索 (6)
- 英语研究 (58)
- 星际争霸 (1)
- 电信知识 (1)
- 软件架构 (3)
- 哲学探索 (26)
- 算法灵魂 (8)
- 近视探索 (6)
- 数学数学 (3)
- 牛角钻尖 (23)
- 至强文言 (3)
- 数据结构 (1)
- 宇宙物理 (2)
- 网络架构 (3)
- 游戏领域 (4)
- 图形处理 (2)
- 修炼之路 (8)
- 读书天地 (20)
- 编解乱码 (2)
- 概念探索 (8)
- 格物致知 (1)
- 其它语言 (1)
- 测试领域 (3)
- 文化风流 (1)
- JQuery (1)
- 網頁領域 (1)
- Unix/Linux (1)
- Inside JVM (1)
- 异常分析 (1)
最新评论
-
suyujie:
引用
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
suyujie:
HTML <a> 标签灰显禁用 -
iamzhoug37:
您能说一下"局部变量不受文本顺序限制" 是 ...
声明前为什么能赋值却不能输出,都是使用
public class Stack { static { a = 6;// ---- 1 System.out.println(a);// ---- 2 } static double a = 3.234; public static void main(String[] args) { System.out.println(a); } public void go() { a = 7; System.out.println(a); int a; } }
以上代码1处可以,2处却编译出错
回答:
就是说,成员在使用前(此“前” 指 代码书写文本顺序)需定义,且成员必须是类或接口C的实例或静态变量,(局部变量不受文本顺序限制)
* The usage occurs in an instance (respectively static) variable
initializer of C or in an instance (respectively static) initializer of
C.
使用须出现在C的实例变量初始化体或静态变量初始化体,C的实例初始化块或静态初始化块中
* The usage is not on the left hand side of an assignment.
使用须在赋值式左手边(这里原文表达可能有些问题,通过后文确认了)
* The usage is via a simple name.
使用须是简单命名
* C is the innermost class or interface enclosing the usage.
C是包含该“使用”的直接上层类或接口
摘自:
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#287406
8.3.2.3 Restrictions on the use of Fields during Initialization
public class Test { public int instancevariable; public static int staticvariable; static { System.out.println("Static Initializer..."); } { System.out.println("Instance Initializer..."); } public Test() { System.out.println("Constructor..."); } }
class UseBeforeDeclaration { static { x = 100; // ok - assignment int y = x + 1; // error - read before declaration int v = x = 3; // ok - x at left hand side of assignment int z = UseBeforeDeclaration.x * 2; // ok - not accessed via simple name Object o = new Object() { void foo() { x++; } // ok - occurs in a different class { x++; } // ok - occurs in a different class }; } { j = 200; // ok - assignment j = j + 1; // error - right hand side reads before declaration int k = j = j + 1; int n = j = 300; // ok - j at left hand side of assignment int h = j++; // error - read before declaration int l = this.j * 3; // ok - not accessed via simple name Object o = new Object() { void foo() { j++; } // ok - occurs in a different class { j = j + 1; } // ok - occurs in a different class }; } int w = x = 3; // ok - x at left hand side of assignment int p = x; // ok - instance initializers may access static fields static int u = (new Object() { int bar() { return x; } }).bar(); // ok - occurs in a different class static int x; int m = j = 4; // ok - j at left hand side of assignment int o = (new Object() { int bar() { return j; } }).bar(); // ok - occurs in a different class int j; }
发表评论
-
关于方法访问控制符protected
2012-11-29 10:38 1193http://bbs.csdn.net/topics/3902 ... -
一个基本问题关于引用的
2012-05-15 10:20 1069问: int a = 1; Integer b = new ... -
我對面向對象和過程的理解。
2012-05-02 08:30 1005我的一些理解。 面向过程,是对客观现象的描述,感觉是有一个上 ... -
stack and heap
2012-01-13 23:17 1006我觉得是根据应用方式 和本身特性 才将内存分区的,目的是提 ... -
program experience conclusion
2011-07-11 15:35 10101. check parameters for validit ... -
PreparedStatement's possible designated parameter
2011-04-29 13:45 932though it's nearly impossible t ... -
clean Log4j
2011-04-12 11:19 1021import org.apache.log4j.BasicCo ... -
about abstract class
2011-04-02 10:34 803yes, we do know abstract class ... -
cvs operations on linux
2011-03-25 09:40 955http://www.linuxhowtos.org/Syst ... -
regex to exchange two parts
2011-03-24 17:09 1006public class Test { public ... -
About the database locking
2011-03-09 11:02 899http://en.wikipedia.org/wiki/Lo ... -
how to send soap message in java
2011-03-08 10:29 1849import java.io.BufferedReader; ... -
About ShutDownDemo
2011-03-07 15:02 917public class ShutdownDemo { p ... -
How do you know if an explicit object casting is needed
2011-02-24 16:33 1117通俗来讲,不可能将一只是猫的动物强转为狗 再说Graphic ... -
有关MimeUtility
2011-02-24 13:11 3292import java.io.UnsupportedEncod ... -
C#连接sql server 2008的一件2事
2011-02-24 09:01 2108once upon a time, i came upon o ... -
Shadowing, Overriding, Hiding and Obscuring
2011-02-22 15:15 1092当子类属性与父类属性重叠时 这种叫法上是shadowi ... -
JAXP usage
2011-02-16 16:07 1049import java.io.ByteArrayInputSt ... -
运行一个类,如果classpath中路径带空格就加双引号
2011-02-11 11:25 2759注意是这样加: java -cp .;"d:\my ... -
关于ClassPath中的current directory
2011-01-28 16:40 1112Given: 1. package com.company. ...
相关推荐
数据的输入输出 赋值表达式和赋值语句 顺序程序设计举例
编一个程序,定义结构类型(有学号、姓名、性别和程序设计成绩四个字段),声明该结构类型变量,用赋值语句对该变量赋值以后再输出。
网二维数组的动态创建和释放.pdf 网负号重载(1).pdf 网负号重载pdf 赋值号“==“重载(1).pdf 赋值号"== “重载.pdf 构造函数可以调用虚函数吗, 析构函数可... 后置加加(1).pdf ...为什么不能自赋值1...
任务二 计算圆形的各参数 任务描述:设计一个小程序,首先了解圆形各参数的基本计算公式,运用本节介绍的操作...不能使用关键字作变量名,可以导入keyword模块后使用print(keyword.kwlist)查看所有Python关键字。
1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?constintn=5;inta[n]; 1.20 constchar*p、charconst*p和char*constp有什么区别? 复杂的声明 1.21 怎样建立和理解非常复杂的声明?例如定义一个...
题目:建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个...
1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 10 1.20 const char *p、char const *p和char *const p有什么区别? 10 复杂的声明 11 1.21 怎样建立和理解非常复杂...
//循环为整型数组赋值 //循环输出整型数组中的元素 //求整形数组的累加和 //定义整形数组 //从键盘接收数据,为数组元素赋值 //求数组元素的累加和 //求数组元素的最大值 如何对变量a,b的值进行交换 //冒泡排序 //内...
变量计算和输出:将num1和num2相加,并将结果赋值给变量sum,然后使用std::cout输出结果。 函数调用:在main函数中调用了printMessage函数,以输出一条消息。 返回值:main函数以return 0;结束,将0作为程序的...
1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 1.20 const char *p、char const *p和char *const p有什么区别? 复杂的声明 1.21 怎样建立和理解非常复杂的声明?例如定义...
变量名不能使用C语言的关键字作为名称 在使用变量时,可通过变量名来引用变量的值,例如: printf("The value of num is: %d\n", num); 这样就可以输出变量num值。在C语言中,变量的作用域可以是全局的或局部的,...
(2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。 (3)重载时间类的构造函数(不带参数)使小时、分、秒均为0。 (4)在时间类的析构函数中输出...
6、使用read()来同时读入一个到多个数据,使用write()来同时输出一个到多个数据。 7、在循环分支语句中实现了if……then……else……语句,case……of……end语句,for……to/downto……do……语句,while……do...
//方法二:使用foreach输出:此为JDK5.0 新特性 for(int item : arr) { System.out.println(item); } 常见算法: 1. 求一维数组中的最大[小]值 2. 求一维数组中的总和,平均值 3. 添加,删除,修改,搜索...
可分别通过词法、语法、语义分析输出<单词种别,单词自身值>二元式、语法树、四元...可以检查赋值精度错误、函数参数类型不匹配错误、静态数组元素下标越界错误、break错误、continue错误、函数参数不匹配错误等
o 7.18 当数组是函数的参数时, 为什么 sizeof 不能正确报告数组的大小 ? * 8. 内存分配 o 8.1 为什么这段代码不行?char *answer; printf("Type something:\n"); gets(answer); printf("You typed \"%s\"\n", ...
2、声明变量允许不使用var关键字,但并不推荐 练习: 1、创建一个网页 04-variable.html 2、声明一对 [removed][removed],并完成以下变量的声明 1、声明一个变量用于保存用户的姓名,并赋值为 "张三丰"; 2、...
面试场景:前端面试 建议阅读对象:前端工程师 内功概要:前端面试-es6的相关面试题(问题+答案) 1、 ES6常用语法有哪些? 【参考答案】 ① Let: ...9、请说出以下程序的输出结果的顺序,为什么?