Java for 循环里的标签

break可以跳出当前循环,continue可以跳过本次循环相信对大家并不陌生,但是如果想跳出不止一层循环呢?

看看下面的例子便清楚了,这是来自Java官方tutorial的一个小例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length;
j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at " + i + ", " + j);
} else {
System.out.println(searchfor + " not in the array");
}
}
}

阅读更多

为什么8位有符号整数的范围为“-128 ~ +127”

这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来的java,int的聚值范围,再32位计算,-2^31 ~ +2^31-1,可是,却从来没有任何一本教科书或一个老师比我解释过这个问题。 原因没有在工作上或者是什么地方直接遇到它,所以我也一直忽略它,但心里总是有一根刺。

直到刚才!!!! 就是刚才,无聊之极,在看汇编的书时,又遇到它了,但一如以往,书上直接地,有心地,明显地绕过了这个问题,真是可恶啊。

几经周折,终于把它搞清楚了:
其实,它是计算机底层为了实现数值运算而决定的,涉及非常非常基础的原码,反码,补码知识,一般(99.9999%)都不会用得上。 那0.0001%,估计也就是计算机考试了。

阅读更多

关于 Java 中 Integer 和 Long 类型对象的比较(简单却容易犯的错误)

做客户端“忘记密码”功能有bug,今天调试时,发现了原因:

功能模块中有一段:

1
2
3
4
if(userpo.getId() != Long.valueOf(uid)){
throw new VerifyException("mobile have been binded for uid=" + uid ,
AppCode.VERIFY_MOBILE_IS_BIND);
}

问题就出在两个Long型对象的比较。

情景:

userpo.getId()返回一个Long型对象,值是10027;
Long.valueOf(uid)返回一个Long型对象,值也是10027;

通过 != 运算,值是 true ,实际期待的是 false

阅读更多

Learn Gradle - CH 3 Java 快速入门

上一节主要对Gradle的脚本进行了简要的介绍,本节将继续学习Gradle的另外一个特性——插件(plugins)。

1、插件介绍

插件是对Gradle功能的扩展,Gradle有着丰富的插件,你可以在这里搜索相关插件(传送门)。本章将简要介绍Gradle的Java插件(Java plugin),这个插件会给你的构建项目添加一些任务,比如编译java类、执行单元测试和将编译的class文件打包成jar文件等。

Java插件是基于约定的(约定优于配置),它在项目的很多方面定义了默认值,例如,Java源文件应该位于什么位置。我们只要遵循插件的约定,就不需要在Gradle配置脚本进行额外的相关配置。当然,在某些情况下,你的项目不想或不能遵循这个约定也是可以的,这样你就需要额外的配置你的构建脚本。

Gradle Java插件对于项目文件存放的默认位置与maven类似。

阅读更多

Learn Gradle - CH 2 基本的构建脚本介绍

1、项目和任务

Gradle 构建脚本包括两个最基本的概念,就是项目(projects)和任务(tasks)。

项目是指我们的构建产物(比如jar包)或实施产物(比如web application等)。Gradle构建脚本包含一个或多个项目。

任务是指不可分的最小工作单元,执行构建工作(比如编译一些类文件、创建jar文件、生成javadoc以及发布架构文档到仓库等)。一个项目包含一个或多个任务。

2、Hello World!!

下面我们学习一个简单的hello world例子来简单认识一下Gradle构建脚本。

新建文件:build.gradle

添加内容:

1
2
3
4
5
task hello {
doLast {
println 'Hello world!'
}
}

使用命令行进入build.gradle所在目录,执行:gradle hello ,输出:

阅读更多

Learn Gradle - CH 1 安装

1、下载Gradle

方式一:http://gradle.org/ 使用首页Download链接直接下载最新版。

方式二:http://gradle.org/gradle-download/ 在“PREVIOUS RELEASES”(右侧)下方选择一个版本,然后选择完整版“Complete distribution”或者选择不含源码和文档仅包含程序的版本“Binary only distribution”下载。

(这里下载最新版本完整压缩包:gradle-2.5-all.zip)

2、安装

解压缩下载的zip文件:gradle-2.5-all.zip 得到目录 gradle-2.5 ,将文件夹移动到合适的位置,如 F:\gradle-2.5,这个文件包含了所有gradle的内容,包括:

1
2
3
4
5
执行程序(bin、lib)
文档(docs)
源码(src)
例子(samples)
配置环境变量:

新增变量名:GRADLE_HOME,变量值:F:\gradle-2.5
在已有Path变量的末尾追加字符串 ”;%GRADLE_HOME%\bin;“(引号内的字符串)

阅读更多

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

阅读更多