Java版本自增版代码 java自增序列号

JAVA里面的自增问题、实在是搞不明白了。

结果是5也对6也对.

在湖里等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站制作 网站设计制作按需网站开发,公司网站建设,企业网站建设,品牌网站设计,成都全网营销推广,成都外贸网站建设公司,湖里网站建设费用合理。

只是你说结果是5所以其他人就帮你找5的借口了..如果结果输出6,自然就有人告诉你6的理由.

是5还是6取决于java解释器怎么对表达式分段(就是怎么样才算一段,一次运算)

如果a++就算是一次运算那么结果就是6,如果整行算一次运算那么结果就是5.

这要看解释器的实现者愿意怎么去实现了,因为这方面并没有规定或者协议文档.

有鉴于此原因,

请以后不要写这样的代码因为很可能会给程序带来不可估量的后果(因为结果的不确定性,理论上有可能这个版本的JDK下是5下个版本是6...还是那句话,取决于解释器实现人想要怎么去实现)

C++里同样有这个问题,

所以请不要把后自增运算X++

其他操作放在同一个表达式,

如果实在需要放一起,请改变表达式使用++X

并更改顺序.

Java如何生成版本号?比如0001 0002 0002

首先还是不太明白你说的这个“生成版本号”是什么意思,如果只是生成一个自增序列的话

1、如果有oracle数据库的话可以利用它的序列生成。

2、没有oracle,用redis也行。

3、没有数据库,那就写个文件来存取吧:

public class Test2 {

public static void main(String[] args) throws IOException {

System.out.println(getSequence("d:\\test\\sequence.txt"));

setSequence("d:\\test\\sequence.txt", "");

System.out.println(getSequence("d:\\test\\sequence.txt"));

}

//读取序列

public static String getSequence(String sequenceFile) throws IOException {

FileInputStream fileInputStream = null;

InputStreamReader inputStreamReader = null;

BufferedReader bufferedReader = null;

try {

File file = new File(sequenceFile);

fileInputStream = new FileInputStream(file);

inputStreamReader = new InputStreamReader(fileInputStream);

bufferedReader = new BufferedReader(inputStreamReader);

// 按行读取字符串

String str;

if ((str = bufferedReader.readLine()) != null) {

return str;

}

return null;

} catch (Exception e) {

e.printStackTrace();

return null;

} finally {

if (bufferedReader != null) {

bufferedReader.close();

}

if (inputStreamReader != null) {

inputStreamReader.close();

}

if (fileInputStream != null) {

fileInputStream.close();

}

}

}

//设置序列,如果传入的序列号为空,则在原序列的基础上+1

public static void setSequence(String sequenceFile, String sequence) throws IOException {

if (sequence == null || sequence.isEmpty()) {

String oriSequence = getSequence(sequenceFile);

Objects.requireNonNull(oriSequence);

sequence = String.format("%04d", Integer.valueOf(oriSequence) + 1);

}

FileOutputStream fileOutputStream = null;

OutputStreamWriter outputStreamWriter = null;

BufferedWriter bufferedWriter = null;

try {

File file = new File(sequenceFile);

fileOutputStream = new FileOutputStream(file);

outputStreamWriter = new OutputStreamWriter(fileOutputStream);

bufferedWriter = new BufferedWriter(outputStreamWriter);

bufferedWriter.write(sequence);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (bufferedWriter != null) {

bufferedWriter.close();

}

if (outputStreamWriter != null) {

outputStreamWriter.close();

}

if (fileOutputStream != null) {

fileOutputStream.close();

}

}

}

}

代码又挤在一起了:

读序列:

写序列:

运行结果:

先生成好这个文件:

冲!:

javastream里如何实现自增

java项目实现流水号自动增长

项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001。

实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储;

业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步;

编码前置0,使用String.format("%05d", newNum);格式化获取。

实现代码如下:

private final static AtomicInteger atomic = new AtomicInteger(0);

public static String startFormat(String format) {

return String.format(format, atomic.incrementAndGet());

}

java的自增运算符和自减运算符是什么

自增(++)和自减(--)运算符

在JAVA语言中存在着很多运算符,但是在实际开发中我们或许很少用到它们,在初次学习中却时常出现它们的身影,对于这些运算符的含义和用法,是否还记得呢?下面让我们来看看下面几段Java代码:

int i = 0;

int j = i++;

int k = --i;

这段代码运行后,i等于多少?j等于多少?k等于多少?相信对于这段代码应该没有问题,因为很简单。结果为:i=0,j=0,k=0。那下面这段呢?

int i = 0;

int j = i++ + ++i;

int k = --i + i--;

代码执行后i、j、k分别等于多少呢?答案为i=0,j=2,k=2。不知道对这个结果有没有疑问呢?起初我第一眼扫过去的结果和真正的执行结果是不同的,也就是我判断错了。也许会问,怎么这么简单的问题都弄错呢?是的,有时稍微不注意真会出错。这看的就是我们对Java运算符优先级的认识。来,继续看下面这段代码:

int i=0;

System.out.println(i++);

这段代码运行后输出结果是什么?0?1?答案当然是i=0。这个是毋庸置疑的。接着看下面这段代码:

float f=0.1F;

f++;

double d=0.1D;

d++;

char c='a';

c++;

上面这段代码可以编译通过并执行吗?答案是肯定的。如果此时对上面说的都没有问题,那么就可以说明对自增自减运算符已经掌握的很好了。现在就让我们还回顾一下相关知识:

自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。

自增与自减运算符还遵循以下规律:

1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。

2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。

3. 它们的运算结果的类型与被运算的变量的类型相同。

JAVA 自增

当a == 1 的时候

a++ 是先使用后加1,所以先输出结果为 1。

++a 是先加1后使用,所以输出结果为 2.

不管是a++ 还是 ++a ,使用之后 a 的值都已经确定变成2了。

就是这样子,呵呵...


网站名称:Java版本自增版代码 java自增序列号
标题链接:http://bzwzjz.com/article/hhooic.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设改版 成都网站建设 手机网站制作 专业网站设计 成都网站设计 成都网站建设公司 定制级高端网站建设 网站制作 成都网站设计制作公司 品牌网站建设 成都网站设计 企业网站设计 成都网站制作 成都网站制作 成都网站建设 重庆网站建设 成都网站制作 重庆企业网站建设 成都网站建设 重庆企业网站建设 网站建设方案 成都网站设计