- 浏览: 746415 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1260http://bbs.csdn.net/topics/3902 ... -
一个基本问题关于引用的
2012-05-15 10:20 1125问: int a = 1; Integer b = new ... -
我對面向對象和過程的理解。
2012-05-02 08:30 1064我的一些理解。 面向过程,是对客观现象的描述,感觉是有一个上 ... -
stack and heap
2012-01-13 23:17 1050我觉得是根据应用方式 和本身特性 才将内存分区的,目的是提 ... -
program experience conclusion
2011-07-11 15:35 10621. check parameters for validit ... -
PreparedStatement's possible designated parameter
2011-04-29 13:45 985though it's nearly impossible t ... -
clean Log4j
2011-04-12 11:19 1064import org.apache.log4j.BasicCo ... -
about abstract class
2011-04-02 10:34 865yes, we do know abstract class ... -
cvs operations on linux
2011-03-25 09:40 1008http://www.linuxhowtos.org/Syst ... -
regex to exchange two parts
2011-03-24 17:09 1087public class Test { public ... -
About the database locking
2011-03-09 11:02 962http://en.wikipedia.org/wiki/Lo ... -
how to send soap message in java
2011-03-08 10:29 1894import java.io.BufferedReader; ... -
About ShutDownDemo
2011-03-07 15:02 980public class ShutdownDemo { p ... -
How do you know if an explicit object casting is needed
2011-02-24 16:33 1186通俗来讲,不可能将一只是猫的动物强转为狗 再说Graphic ... -
有关MimeUtility
2011-02-24 13:11 3360import java.io.UnsupportedEncod ... -
C#连接sql server 2008的一件2事
2011-02-24 09:01 2151once upon a time, i came upon o ... -
Shadowing, Overriding, Hiding and Obscuring
2011-02-22 15:15 1163当子类属性与父类属性重叠时 这种叫法上是shadowi ... -
JAXP usage
2011-02-16 16:07 1096import java.io.ByteArrayInputSt ... -
运行一个类,如果classpath中路径带空格就加双引号
2011-02-11 11:25 2805注意是这样加: java -cp .;"d:\my ... -
关于ClassPath中的current directory
2011-01-28 16:40 1152Given: 1. package com.company. ...
相关推荐
《C语言数据输入输出、赋值与顺序结构程序设计详解》 C语言是计算机编程的基础,其中数据的输入输出、赋值以及顺序结构程序设计是初学者必须掌握的基本概念。在C语言中,数据的输入输出并非直接通过特定的语句实现...
本文将深入探讨SQL中的变量声明和赋值方法,旨在为初学者提供一个全面的理解框架,同时为有经验的开发者提供一个快速回顾的平台。 ### SQL变量声明 在SQL中,变量用于存储数据,它们可以是在查询过程中动态生成或...
在Java中,某些特殊字符不能直接作为字符值赋给变量,如换行符(\n),制表符(\t)等。这些字符需要使用转义序列`\`来表示。例如: ```java char newline = '\n'; ``` 这里的`\n`是一个转义序列,代表换行。 3. *...
1. 默认情况下的数据类型:在C++中,char和int类型的数据默认是有符号数,除非明确地声明为无符号数。 2. 实型常量的默认类型:实型常量默认是double类型,如果后缀是F则为float类型。 3. 预处理:预处理是指在...
### C# 数据实体类中如何给属性赋值 在C#开发中,处理数据库查询结果时,经常需要将查询结果映射到实体类中。本文将详细介绍如何在C#的数据实体类中为属性赋值,特别是当从数据库中取出的是一个`DataSet`对象时。 ...
### C++动态二维数组的申请、赋值、使用、释放及作参数详解 #### 一、引言 在C++编程中,动态二维数组是非常重要的数据结构之一,它能够根据程序运行时的需求灵活地分配内存空间。本文将详细介绍如何在C++中创建、...
在程序设计语言的世界里,输入、输出和赋值语句是构建算法的基础构件,它们允许程序与外部世界沟通,处理数据,并将结果反馈给用户。通过对这些基础语句的理解和应用,编程新手可以顺利地迈入程序设计的门槛,而经验...
无论是数组还是对象,解构赋值都能让我们的代码更加简洁、易读。此外,我们还探讨了使用小括号进行解构赋值的情况以及如何在实战中利用这一特性来优化代码。掌握这些技巧对于提高JavaScript编程效率是非常有益的。
本资源涵盖了C语言中赋值运算和复合赋值运算的知识点,包括赋值语句的格式、赋值运算符、复合赋值运算符、变量的定义和赋值、表达式的计算顺序等。 一、赋值语句 赋值语句是将一个值赋给变量的语句。基本格式为:...
接下来,我们可以声明结构类型的变量,并用赋值语句为其赋值。例如: ```c int main() { Student stu1; // 赋值 strcpy(stu1.id, "001"); strcpy(stu1.name, "张三"); strcpy(stu1.gender, "男"); stu1....
inout端口不能声明为reg类型,只能是wire类型。inout端口可以用于输入和输出信号的交换,它们之间的差异就在于输入和输出的方向不同。inout端口可以用在模块之间的数据传输中,例如,在一个模块中inout端口可以作为...
在深入学习过程中,除了基本的声明、初始化、赋值和访问外,还需要掌握一些高级技巧,比如动态调整数组大小、使用指针操作数组、以及结合其他易语言特性的高级应用等。通过不断实践和探索,学习者能够逐步提高自己的...
同时,解决这些小问题也能帮助初学者锻炼逻辑思维和问题解决能力,为后续更复杂的编程任务打下坚实的基础。在学习过程中,不断实践和调试代码是提高技能的关键,这10个文件提供的案例正好提供了这样的机会。
2. **变量声明与赋值**:定义变量存储数据,并用“=”进行赋值操作。 3. **输出命令**:如“输出”和“格式化输出”,用于向控制台写入信息。 4. **流程控制**:如循环和条件语句,可以控制何时及如何输出信息。 5. ...
接下来,Python中的变量在使用前不需要预先声明。与C++或Java等语言不同,你不需要声明变量的数据类型或预留内存空间。变量在首次赋值时自动创建,这意味着你可以直接写: ```python name = "John Doe" ``` 在这条...
根据提供的文件信息,本文将对“简单赋值语句的语法分析”进行详细的解析与讨论。此代码示例主要关注于C++中的简单赋值语句语法分析过程,并且通过一个具体的实现方式来展示了如何处理这类语法分析问题。 ### 标题...
Python是一种动态类型的语言,这意味着我们不需要提前声明变量的类型,变量的类型会根据所赋的值自动确定。 接下来是赋值。在Python中,可以将一个变量的值赋给另一个变量,如`y = x`,此时`y`也变成了10。变量可以...
压缩包文件代码是一个简单的C语言入门示例代码,它演示了基本的输入输出、变量声明、赋值以及简单的算术运算。 代码说明: 1、头文件包含:#include <stdio.h> 是C语言标准输入输出库的头文件,它包含了进行输入输出...
通过以上讲解,你应能理解VB中数组的基本操作,包括声明、初始化、赋值、输出以及动态调整。实际编程中,灵活运用数组能提高代码的效率和可读性。在处理大量数据或进行批量操作时,数组是不可或缺的工具。
本题目要求输出 9*9 口诀,使用了 C 语言的基础知识,包括变量声明、赋值、循环语句和输出语句。该程序使用了两个循环变量 i 和 j,通过循环输出 9*9 口诀的结果。 2. 兔子繁殖问题 本题目是一个经典的递归问题,...