JAVA基础 语句标签的合法使用,以及{}语句块到底有什么用?

如写这样的一段代码:


代码如下:

int i;
{
int j=1;
i=j;
}

如果这段代码是存在于类定义区域,那么我们知道它是个普通的语句块,用于初始化类属性的内容,它会在类实例化的时候被调用,里面可以执行一些方法。
在很多实例里,它会用于单例等模式,之前加上一个static,来为复杂的类初始化内容,可以避免一些由于加载顺序引起的运行期异常。
但是,如果这段代码出现在方法里呢?
它基本一点意义都没有。在我自己从前的想法里,它就是个把代码括起来的格式,没有其他。
今天写了一点和“语句标签”相关的代码:


代码如下:

label17: int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;

在“:”位置出现了异常“Syntax error on token ":", { expected after this token”。
即是说,当代码无法单行存在的时候(int i在方法体内部必须有明确的实例化\赋值位置),label17需要用语句块标明。
正确的格式是:


代码如下:

label17: {
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;
}
或者:
   label17:
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag){
break label17;
return 0;}

再来看个错误的用法:


代码如下:

label13: int x = 0;

很明显,在标签后有个默认的单行语句块,这个x在以后的任何位置都无法被使用到,错误。提示如下:
Multiple markers at this line
- x cannot be resolved to a variable
- Syntax error on token "int", delete this token
正确的格式有两种:


代码如下:

int x = 0;
label13: x = 0;
或者
label13:{ int x = 0;}

于是推想,以前的一个思维误区,for(){},if(){}之类的用法中,逻辑if()和语句块{}应该是相互独立的两种语法。

(0)

相关推荐

  • 浅析java的foreach循环

    使用foreach循环遍历数组和集合时,无需获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每一个元素. 复制代码 代码如下: foreach的语句格式: for(type variableName : array|connection){      //variable自动迭代访问每一个元素} 例子: 复制代码 代码如下: public class ForEachTest{public static void main(String[] arg

  • Java中替换HTML标签的方法代码

    1.替换HTML标签 复制代码 代码如下: replaceAll("\\&[a-zA-Z]{0,9};", "").replaceAll("<[^>]*>", "\n\t") 源码如下: 复制代码 代码如下: /** * 字符串替换 */package com.you.model; /** * HTML标签替换 * @author YHD * @version */public class StrRe

  • java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle {    public static void main(String[] args) {        int triangle[][]=new int[10][];// 创建二维数组        // 遍历二维数组的第一层  

  • 深入浅析Java 循环中标签的作用

    continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差.因此Java就发明了一种带标签的continue和break语句,实际上它是一种带限制的专门用于循环的goto语句. 通常情况下我们使用的continue(或break)语句不带标签,这时也就是默认在当前的循环中执行continue(或break)语句.带标签的循环实际上

  • Java利用for循环输出空心菱形的实例代码

    程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 编写程序,在控制台上输出空心菱形,对角距离为6. public class Diamond { public static void main(String[] args) { printHollowRhombus(6); } public static void printHollowRhombus(int size) { if (size % 2 == 0) { size+

  • Java Map的几种循环方式总结

    根据JDK的新特性,用For循环Map,例如循环Map的Key Java代码 复制代码 代码如下: for(String dataKey : paraMap.keySet())    {        System.out.println(dataKey );               } 这里要注意的是,paraMap是怎么样定义的,如果是简单的Map paraMap = new HashMap();那前面的String就只能换成Object了. 对整Map的key和value都进行循环,如

  • Java自定义简单标签实例

    下面将以权限的控制为例自定义一个标签:一.标签类型 复制代码 代码如下: <wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per> 步骤:1.自定义一个类PerssionTag 继承SimpleTagSupport(自定义标签一般都会继承这个类) 复制代码 代码如下: package cn.com.liveuc.privilege.tag;import java.io

  • Java/Js下使用正则表达式匹配嵌套Html标签

    通用 HTML 标签区配正则 最近看网站日志,发现有人在博客上转了我不知道几年前写的一个匹配 HTML 标签的正则,刚好最近也在做一些相关的事情,顿时来了兴趣.就拿回来改改,成了下面这样,可能会有一些 case 遗漏,欢迎修改,已知在内嵌 <script> 复杂内容的处理能力较弱,不过对纯 HTML 来说已经够用,拿来做一些分析工具还是不错滴. 复制代码 代码如下: <script type="text/javascript"> var str = "

  • java去掉html标签 必须首先去掉双引号的正则

    复制代码 代码如下: public static String htmlToStr(String htmlStr){ String result = ""; boolean flag = true; if(htmlStr==null){ return null; } htmlStr = htmlStr.replace("\"", ""); //去掉引号 char[] a = htmlStr.toCharArray(); int leng

  • java基础之标签、按钮和按钮事件简介

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色,背景色.字体等,但不能动态地编辑标签中的文本. 程序关于标签的基本内容有以下几个方面: 1.声明一个标签名: 2.创建一个标签对象: 3.将标签对象加入到某个容器. JLabel类的主要构造方法是: 1.JLabel ():构造一个无显示文字的标签: 2.JLabel (String s):构造一

随机推荐