Java数据类型和运算符(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40938646/article/details/88080857

注释

       我们常常说,你的代码在你写的时候你和上帝知道是什么意思,时间长了只有上帝知道是什么意思,所以说代码注释很重要。养成一个写注释的好习惯对我们来说是很重要的。

注释写法

为什么要写注释

       1.当我们在进入一种编程境界的时候我们写起代码来很顺畅,这时候你的思维处于开发状态。时间一久,我们在阅读这段代码时很难在进入那样的一种状态,而代码注释可以帮助我们快速进入状态。
       2.我们开发常常是整个团队开发,团队成员之间的沟通很重要,你写的代码需要其他人理解,注释增加代码的可读性。

三种注释

       一般的编程语言会提供单行注释和多行注释,在Java中还有一种文档注释。

  • 单行注释//单行注释
  • 多行注释/* 多行注释 */
  • 文档注释/**文档注释 */
文档注释

       在编写Java源代码时写文档注释,可以通过javadoc工具直接将源代码的文档提取成一份系统的API。API文档分为3个部分,包列表区(左上角),类列表区(左侧),详细说明区(右侧·)。

API文档是什么?

       在开发一个大型软件的时候,需要定义上千万的类,而且需要很多人的参与开发,每个人开发一些类,并在类里面定义一些方法属性供其他人使用,但是其他人怎么知道如何使用这些方法呢?这时候就需要提供一系列的文档说明,用于说明这个方法这个类的功能。其他人使用这个类时只需要知道他的用途使用方法,而不需要知道具体实现,然后使用这个方法或类实现具体的目的,也就是通过调用应用程序接口的(API)来编程,API文档就是用来说明应用程序接口的文档。
       Java中提供了大量的基础类,Sun公司也为这些基础类提供了相应的API文档。

  • 注意:使用javadoc生成的文档不包括私有(private)方法和属性,如果需要生成私有(private)方法和属性等需要加-private。javadoc默认只处理public和protected修饰的类、接口、方法、属性构造器之前的文档注释。

javadoc命令生成API文档

步骤

1.写好文档注释。
在这里插入图片描述

2.cmd打开打开dos窗口,使用cd命令切换到文件所在路径
在这里插入图片描述

3.使用javadoc 类名.java命令创建文档
在这里插入图片描述

4.打开文档,在当前类路径下可以看到多出了很多文件,打开生成的文档(当前只有一个类)在这里插入图片描述


注意:如果是第一次使用javadoc可以使用javadoc help命令查看使用说明。
在这里插入图片描述

常用的命令
  • -d <目录名>:指定一个路径,将生成的API文档放在指定目录下
  • -windowtitle <标题>:设置APi文芳的浏览器窗口标题
  • doctitle <HTML格式的的文本>:概述页面的标题
  • header <HTML格式的文本>:包含每个页面的页眉
  • 注意:一定要对处于多个包下的源文件生成API文档时才会有概述页面。

       如果我们希望生成的API文档更详细,例如方法参数,方法返回值等生成详细说明,则可以利用javadoc标记,常用标记如下

javadoc标记
  • @author:指定作者
  • @version:指定版本号
  • @deprecated:不推荐使用该方法
  • @param:方法的参数说明
  • @return:方法返回值说明
  • @see:“参见”,用于指定交叉参考内容
  • @exceprion:指定抛出的异常类
  • @throws:抛出的异常,和exception同义

文档注释出现的情况

  • 类或接口@see@deprecated@author@version
  • 方法或者构造器@see@deprecated@param@return@throws@exception
  • 属性@see@deprecated等00

标识符和关键字

分隔符

  1. 分号:Java中一句话是用;来结尾的。Java中允许一行书写多行语句,也就是说一行可以有多个分号;一个语句也可以分多行写,最后结束的地方使用分号即可。
  • 注意:Java语句可以分多行写,但是遍历名不能分多行写,也不能有空格。
  1. 花括号:花括号定义的是一段代码块,用{}包裹。类内部必须放在一个代码块,方法体部分也必须放在代码块里面,条件和循环执行体通常也放在代码块里。
  2. 方括号:方括号[]主要是用于数组访问,通常紧跟数组变量名,而方括号里指定希望访问的数组元素索引。例如:a[1]=2;
  3. 圆括号:圆括号()功能非常丰富:定义方法时形参说明、调用方法时传递参数、将表达式中某个整体括起来(保证这个部分先计算)、强制性转换的运算符等。
  4. 空格:空格的使用比较自由,几乎可以出现在java的任何部分,也可有多个空格。java中空格符包括:空格符(Space)制表符(Tab)回车(Enter)
  5. 圆点:圆点.通常是做类、对象和他的成员(属性、方法、内部类)之间的分隔符,表明调用某个类或者实例的指定成员。

标识符规则

       所谓的表示符就是用于程序中变量、类、方法命名的符号。Java的标识符必须以字母下划线(_)、**美元符($)**开头,后面可以跟任意的字母,下划线,美元符,数字。这里的字母不仅仅局限于26个英文字母,还包括中文、日文等其他国家语言。标识符中不能有空格、回车,不能使用Java的关键字个保留字,长度无限制。

Java关键字

关键字:Java语言中有一些具有特殊用途的单词被称为关键字(keyword)。
在这里插入图片描述
       48个关键字,2个保留字,enum是Java5.0新增的关键字,用于定义枚举。保留字的意思是Java现在还未使用这两个单词作为关键字,但是可能在未来的Java版本中使用者两个单词作为关键字。Java还提供了3个特殊变量null,true,false,其中null可以给任意的引用类型赋值。


数据类型

java是强类型的语言,就是说每个变量和表达式都有一个在编译时就确定的类型,所以所有变量必须显式声明类型,所有的变量必须先声明后使用,类型限制了一个变量能有的值,限制了一个表达式可以产生的值,限制了在这些值上可进行的操作,并确定这些操作的的含义。
       强类型的语言可以在编译时进行更严格的语法检查,从而减少编程错误。
在这里插入图片描述

空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个null值赋给基本类型的变量。

整型

  • byte:一个byte型整数在内存占8位,范围是:-128( 2 7 -2^7 )到127( 2 7 2^7 -1)。
  • short:一个short型整数在内存理占16位,范围是:-32768( 2 15 ) -2^{15}) )到32767(- 2 15 2^{15} -1).
  • int:一个int型证书在内存占32位,范围是:-2147483648( 2 31 -2^{31} )到2147483647( 2 31 -2^{31} -1).
  • long:一个long型整数在内存占64位,范围: 2 63 -2^{63} 2 63 2^{63} -1

注意

  • 在Java中,整型的范围与Java运行的平台无关,这也解决了Java从一个平台移植到另一个平台所带来的诸多问题。在C,C++中,int和long的大小与目标平台相关,在16位处理器中整型(int)数值占2个字节;在32位上占4字节。同理,16位时long占4位,在64位时占8位。由于这些差别,使得跨平台带来很大难度。
  • Java没有任何符号(unsigned)形式的int、long、short、byte类型。

浮点型

  • float:单精度浮点类型,4字节,范围: ± 3.40282347 E + 38 F \pm3.40282347E+38F (有效位数为6-7位)。需要单精度的数,或者是需要存储大量数据。后缀F或f,没有f或者F默认为double类型。
  • double:double类型是float类型的2倍,所有也称双精度浮点数。绝大多数下我们都使用double类型,8字节,范围: ± 1.79769313486431570 E + 308 \pm1.79769313486431570E+308 (有效位数为15位)。也可以在double类型后面加后缀D或者d。
表示溢出或者出错的三种浮点数
  • 正无穷大:常量Double.POSITIVE_INFINITY
  • 负无穷大:常量Double.NEGATIVE_INFINITY
  • NaN:不是一个数字Double.NaN

注意

  • 一个正整数除以0的结果为正无穷大,计算0/0或者负数的平方根为NaN。
  • 特别说明,不能检测到这样的一个值是否等于Double.NaN:
    x==Double.NaN;//(永远为false),所有的“非数值”都认为是不相同的,不能检测这样一个特定值是否等于Double.NaN。
    可以使用下面的方法:
    Double.isNaN(X);//检测是否是一个数字

字符型

       Unicode的打破了传统的字符编码机制限制。在Unicode出现之前有许多编码:美国的ASCII、西欧的ISO 8859-1、俄罗斯的KOI-8、中国的GB2312等。Unicode被设计成支持世界上所有书面语言的字符,包括中文,因此Java支持各种语言字符。
一共可以表示65535个字符。
字符常量的三种表示方法

  1. 直接通过指定字符常量,例如:‘A’、'9’等。
  2. 通过转义字符表示特殊字符常量,例如’\n’、’\t’等。
  3. 直接使用Unicode值来表示字符常量,格式是’\uXXXX’,其中XXXX代表16进制整数。

布尔型

       boolean类型只有两种值true或者false,不能用0或者1表示,其他基本数据类型也不能转为boolean类型,


基本数据类型的转换

  • 自动类型的转换

       自动类型转换:系统直接将某个基本类型的值直接赋值给另一种基本类型的变量。

  • 数据类型小的转换为数据类型大的,就类似于将一个小瓶子的水倒到一根大瓶子里,当然是没有问题的。
  • 把任何数据类型的值和字符串进行拼接运算时,基本的数据值将自动类型转换为字符串类型,字符串类型不是基本类型,而是引用类型。
  • 强制类型转换

       格式:(要转为的类型)变量值
       强制类型转换相当于将一个大瓶子里的水倒入一个小瓶子,大瓶子里的水不多小瓶子可以容纳是还好,当大瓶子里的水小瓶子无法装下时,水就会溢出。因此强制类型转换可能造成数据的丢失。这种转换也叫“缩小转换”。

int a=233;
byte b=(byte)a;//b的值为23

在这里插入图片描述

       如上面这段代码,将int类型的233转为byte类型,这是典型的溢出,直接截断浮点数的小数部分,32位int类型的233强制转为8位的byte类型,需要截断前面24位,只保留右边的8位,这8位中左边这位表示符号位,因此变为负的。

       通常情况下,字符串不能直接转为基本类型,但是我们可以通过基本类的包装类转为基本类型。例如:下面使用Integer方法将字符串转为int型

int a=Integer.parseInt("2");
  • 表达式类型的自动提升

       当一个算术表达式中包含多个基本类型时,整个算术表达式的数据类型将会发生自动提升。Java自动提升的规则:
       1.所有的byte、short、char类型将被提升到int型。
       2.整个算是表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
       例如:在下面这个代码中,自动转为int类型,因此转为byte会报错。
在这里插入图片描述

  • 运算符

  1. 算术运算符:加(+)、减(-)、乘(*)、除(/)、求余(%)
  2. 赋值运算符:=
  3. 比较运算符:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
  4. 位运算符:按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左位移运算符(<<)、右移位运算符(>>)、无符号右移位(>>>)。
  5. 逻辑运算符:与(&&)、不短路与(&)、或(||)、不短路或(|)、非(!)、异或(^)。
  6. 类型相关运算符
int a=-5;
int b=10;
if(a>0&&b++>0){}
System.out.println("a="+a+" b="+b);//结果:a=-5 b=10
if(a>0&b++>0){}
	System.out.println("a="+a+" b="+b);//结果:a=-5 b=11
  • 与(&&): 在上面这段代码中,第一个if判断a>0为false,不执行后面b++>0,所有b还是为10。
  • 不短路与(&):在上面第二个if判断,a>0为false,但还是会对后面一个进行判断,b++,所以b 为11。
int a=-5;
int b=10;
if(a<0||b++>0){
	System.out.println("a="+a+" b="+b);//结果:a=-5 b=10
};
if(a<0|b++>0){
	System.out.println("a="+a+" b="+b);//结果:a=-5 b=11
};
  • 或(||):在上面这段代码第一个if判断,a<0为true,不会判断后面那个条件,所以b=10。
  • 不短路或(|):第二个if判断a<=为true,但是还是会判断后面那个条件,所以b++,b=11。

猜你喜欢

转载自blog.csdn.net/qq_40938646/article/details/88080857