首页编程java编程java中下划线什么意思,为什么java 7 开始在数字中使用下划线

java中下划线什么意思,为什么java 7 开始在数字中使用下划线

编程之家2023-10-1195次浏览

大家好,java中下划线什么意思相信很多的网友都不是很明白,包括为什么java 7 开始在数字中使用下划线也是一样,不过没有关系,接下来就来为大家分享关于java中下划线什么意思和为什么java 7 开始在数字中使用下划线的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

java中下划线什么意思,为什么java 7 开始在数字中使用下划线

java中静态变量和静态方法分别有什么特点

为什么问了两次?再贴上另一篇

Thinking:Java中static用法--

Tag: Thinking:Java中s

java中下划线什么意思,为什么java 7 开始在数字中使用下划线

一、static

请先看下面这段程序:

public class Hello{

java中下划线什么意思,为什么java 7 开始在数字中使用下划线

public static void main(String[] args){//(1)

System.out.println("Hello,world!");//(2)

}

}

看过这段程序,对于大多数学过Java的从来说,都不陌生。即使没有学过Java,而学过其它的高级语言,例如C,那你也应该能看懂这段代码的意思。它只是简单的输出“Hello,world”,一点别的用处都没有,然而,它却展示了static关键字的主要用法。

在1处,我们定义了一个静态的方法名为main,这就意味着告诉Java编译器,我这个方法不需要创建一个此类的对象即可使用。你还得你是怎么运行这个程序吗?一般,我们都是在命令行下,打入如下的命令(加下划线为手动输入):

javac Hello.java

java Hello

Hello,world!

这就是你运行的过程,第一行用来编译Hello.java这个文件,执行完后,如果你查看当前,会发现多了一个Hello.class文件,那就是第一行产生的Java二进制字节码。第二行就是执行一个Java程序的最普遍做法。执行结果如你所料。在2中,你可能会想,为什么要这样才能输出。好,我们来分解一下这条语句。(如果没有安装Java文档,请到Sun的官方网站浏览J2SE API)首先,System是位于java.lang包中的一个核心类,如果你查看它的定义,你会发现有这样一行:public static final PrintStream out;接着在进一步,点击PrintStream这个超链接,在METHOD页面,你会看到大量定义的方法,查找println,会有这样一行:

public void println(String x)。

好了,现在你应该明白为什么我们要那样调用了,out是System的一个静态变量,所以可以直接使用,而out所属的类有一个println方法。

静态方法

通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法。如下所示:

class Simple{

static void go(){

System.out.println("Go...");

}

}

public class Cal{

public static void main(String[] args){

Simple.go();

}

}

调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。

静态变量

静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。看下面这段代码:

class Value{

static int c=0;

static void inc(){

c++;

}

}

class Count{

public static void prt(String s){

System.out.println(s);

}

public static void main(String[] args){

Value v1,v2;

v1=new Value();

v2=new Value();

prt("v1.c="+v1.c+" v2.c="+v2.c);

v1.inc();

prt("v1.c="+v1.c+" v2.c="+v2.c);

}

}

结果如下:

v1.c=0 v2.c=0

v1.c=1 v2.c=1

由此可以证明它们共享一块存储区。static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。我们修改上面的程序:

class Value{

static int c=0;

Value(){

c=15;

}

Value(int i){

c=i;

}

static void inc(){

c++;

}

}

class Count{

public static void prt(String s){

System.out.println(s);

}

Value v=new Value(10);

static Value v1,v2;

static{

prt("v1.c="+v1.c+" v2.c="+v2.c);

v1=new Value(27);

prt("v1.c="+v1.c+" v2.c="+v2.c);

v2=new Value(15);

prt("v1.c="+v1.c+" v2.c="+v2.c);

}

public static void main(String[] args){

Count ct=new Count();

prt("ct.c="+ct.v.c);

prt("v1.c="+v1.c+" v2.c="+v2.c);

v1.inc();

prt("v1.c="+v1.c+" v2.c="+v2.c);

prt("ct.c="+ct.v.c);

}

}

运行结果如下:

v1.c=0 v2.c=0

v1.c=27 v2.c=27

v1.c=15 v2.c=15

ct.c=10

v1.c=10 v2.c=10

v1.c=11 v2.c=11

ct.c=11

这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。

通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。如下代码所示:

public class StaticCls{

public static void main(String[] args){

OuterCls.InnerCls oi=new OuterCls.InnerCls();

}

}

class OuterCls{

public static class InnerCls{

InnerCls(){

System.out.println("InnerCls");

}

}

}

输出结果会如你所料:

InnerCls

和普通类

java中如何把字符串的空格转成下划线

replace

public String replace(char oldChar,

char newChar)

返回一个新的字符串,它是通过用 newChar替换此字符串中出现的所有 oldChar得到的。

如果 oldChar在此 String对象表示的字符序列中没有出现,则返回对此 String对象的引用。否则,创建一个新的 String对象,它所表示的字符序列除了所有的 oldChar都被替换为 newChar之外,与此 String对象表示的字符序列相同。

示例:

"mesquite in your cellar".replace('e','o')

returns"mosquito in your collar"

"the war of baronets".replace('r','y')

returns"the way of bayonets"

"sparring with a purple porpoise".replace('p','t')

returns"starring with a turtle tortoise"

"JonL".replace('q','x') returns"JonL"(no change)

参数:

oldChar-原字符。

newChar-新字符。

返回:

一个从此字符串派生的字符串,它将此字符串中的所有 oldChar替代为 newChar。

为什么java 7 开始在数字中使用下划线

JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加下划线的一个重要的原因是避免一些难以通过看代码来发现的细微的错误。对比10000000000和1000000000,我们很难发现少了一个0或多了一个0,但对于10_000_000_000和1_000_000_000却不然。所以如果你在Java源码中要处理大数字,你可以在数字中加入下划线来提高可读性。使用的时候要注意:在字面常量数字里加下划线是有一定规则的,下划线只能在数字之间,在数字的开始或结束一定不能使用下划线。在本章节的以下部分,我们将学习如何在字面常量数字中使用下划线,以及在字面常量数字中使用它们的规则。

怎样在Java中有效的给数字使用下划线

正如我之前说的,这不过是个语法糖,非常像字符串在 switch场景下的实现,这也是使用编译器的帮助下实现的。编译期间,编译器把这些下划线移除,并把真实的数字赋值给变量。比如在编译期间10_000_000将会被转化成10000000。既然CPU在处理长数字上毫无压力,对于我们这些可怜的在处理长数字上有困难的人类来说,就不用为它烦恼了。这个特征尤其在需要处理大数额金钱、信用卡号码、银行账号以及其它需要长账号的银行和金融领域更有用。尽管在写Java文件里写敏感信息很让人沮丧,我们应该永远不要在编码的时候这么做。但在数字中用下划线让我们的生活比以前变得更加简单了。

在Java中给数字加下划线的规则

Java编码语言对给数值型的字面值加下划线有严格的规定。如上所述,你只能在数字之间用下划线。你不能用把一个数字用下划线开头,或者已下划线结尾。这里有一些其它的不能在数值型字面值上用下划线的地方:

在数字的开始或结尾

对浮点型数字的小数点附件

F或L下标的前面

该数值型字面值是字符串类型的时候

这里有一些例子,来表现哪些地方加给数字加下划线有效,哪些地方给数字加下划线无效

1

2

3

4

5

6

7

8

9

10

11

12

13

14

float pi1= 3_.1415F;//无效的;不能在小数点之前有下划线

float pi2= 3._1415F;//无效的;不能在小数点之后有下划线

long socialSecurityNumber1= 999_99_9999_L;//无效的,不能在L下标之前加下划线

int a1= _52;//这是一个下划线开头的标识符,不是个数字

int a2= 5_2;//有效

int a3= 52_;//无效的,不能以下划线结尾

int a4= 5_______2;//有效的

int a5= 0_x52;//无效,不能在0x之间有下划线

int a6= 0x_52;//无效的,不能在数字开头有下划线

int a7= 0x5_2;//有效的(16进制数字)

int a8= 0x52_;//无效的,不能以下划线结尾

int a9= 0_52;//有效的(8进制数)

int a10= 05_2;//有效的(8进制数)

int a11= 052_;//无效的,不能以下划线结尾

下面是一些在数字中用下划线的其它示例:

1

2

3

4

5

6

7

8

long creditCardNumber= 6684_5678_9012_3456L;//在编码的时候,最好永远不要这么做

long socialSecurityNumber= 333_99_9999L;//在编码的时候,最好永远不要这么做

float pi= 3.14_15F;

long hexBytes= 0xFF_EC_DE_5E;

long hexWords= 0xCAFE_BABE;

long maxLong= 0x7fff_ffff_ffff_ffffL;

byte nybbles= 0b0010_0101;

long bytes= 0b11010010_01101001_10010100_10010010;

使用下划线后,你会发现你的代码比以前可读性更强。顺便说一句,在java中应该一直用L去表示一个长整型数字。尽管用小写的l表示长整型数也是合法的,但他看起来太像1了,所以应该永远都不要用它。告诉我你能不能再 12l和121之间找出差别,我猜能找到的人不多吧。但是在 12L与121之间呢?

总之,要养成在数字中使用下划线的习惯,尤其是对长整型数来说,这样能增加它的可读性。我知道这个功能只是从Java1.7开始才有效,还没有被广泛的使用。但鉴于Java1.8的现状,我期望Java8在Java社区中传播比Java7更加迅速更加广泛。

java怎么去掉字符串中的下划线

字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。

字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。字符是计算机中经常用到的二进制编码形式,也是计算机中最常用到的信息形式。

java中下划线什么意思的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于为什么java 7 开始在数字中使用下划线、java中下划线什么意思的信息别忘了在本站进行查找哦。

java中接口的子接口是什么样的(JAVA 中接口是什么意思)java现在流行什么技术,现在主流的JAVA技术是什么