概述
Java中的注释,数据类型,运算符。
第3章 数据类型和运算符
Java是一门强类型语言,强类型包含两方面含义:1、所有变量必须先先声明后使用;2、指定类型的变量只能接受类型与之匹配的值。
3.1 注释
注释用来说明代码的作用,某个类的用途、某个方法的功能,方法的参数,返回值的数据类型及意义等。
程序注释是源代码的一个重要部分,对于一份规范的程序代码而言,注释应该占到源代码的1/3以上。
Java的注释类型有3种:单行注释,多行注释、文档注释。
3.1.1 单行注释和多行注释
单行注释: // 注释内容 多行注释: /*注释内容可以跨越多行*/
除了增加代码可读性,合理利用注释可以便于排查错误。
3.1.2 文档注释
文档注释用于生成API文档,API文档主要用于说明类、方法、成员变量的功能。
因此Javadoc工具值处理文档源文件在类、接口、方法、成员变量、构造器和内部类之前的注释。且默认只处理public和protected修饰的。
文档注释:/** ... */
Javadoc 命令用法: 生成API文档
Javadoc 选项 java源文件|包
常用选项 -d<directory> 指定API文档保存目录
-windowtitle<text> 设置API文档的浏览器窗口标题
-doctitle<html-code> 指定一个HTML格式的文本,用于指定概述页面的标题
-header<html-code> 每个页面的页眉
例:
javadoc -d apidoc -windowtitle 测试 -doctitle 学习javadoc工具的测试API文档 -header 我的类 *Test.java
//注释:这个*是通配符,代表所有名字后面有Test.java的文件
3.2 标识符和关键字
3.2.1 分隔符
Java语言里的分号,花括号,方括号,圆括号,空格,圆点具有特殊的分隔作用,被称为分隔符。
分号;
Java语言使用分号作为语句的分隔,每个Java语句必须以分号结尾。花括号{}
花括号定义代码块,代码块逻辑上是一个整体方括号
方括号用于访问数组元素,通过跟在数组变量名后。圆括号
参数传递、合成表达式、强制类型转换空格
圆点
类.成员
3.2.2 标识符规则
以字母、下划线和$开头,后面可以是字母、数字、下划线,$。此处字母不仅可以是英文,还可以是中文、日文等。
3.2.3 Java关键字
特殊用途的单词,不可以作为标识符。
3.3 数据类型分类
声明变量:
type varName [=初始值];
java支持的类型分两种,基本类型和引用类型。
基本类型包括boolen和数值类型。
引用类型包括类、接口和数组类型,还有一种特殊的null类型。实际上,引用类型变量就是一个指针,只是Java不在使用指针这个说法。
3.4 基本数据类型(8种)
3.4.1 整型
3.4.2 字符型
表示单个字符,使用’'括起来。Java使用16位的Unicode字符集作为编码方式,支持中文字符。
3.4.3 浮点型
3.4.4 数值中使用下划线分割
程序员可以在数值中使用下划线分割,方便分辨数字。
int binVal = 0B1000_0000_0000_0000_0000_0000_0000_0011; double pi = 3.14_15_92_65_36;
3.4.5 布尔型
表示逻辑真(true)或假(false)。
只能有这两个值。其他类型不能转换成boolean类型
3.5 基本类型的类型转换
3.5.1 自动类型转换
范围小的可以向范围大的自动类型转换。
即箭头左边可以转换到右边的。
字符串和基本类型数值使用+可以进行拼接:
System.out.println(3+4+"Hello!"); //输出7Hello!,原因是会先进行3+4运算, System.out.println("Hello!"+3+4);//输出Hello!34
3.5.2 强制类型转换
语法:(targetType)value
将右边类型的值转换成左边类型的值时必须进行强制转换,进行进行强制类型转换时,可能会造成数据精度丢失。
通常情况下,字符串不能直接转换成基本类型,但通过包装类可以实现。
如:
String s = "45"; int iValue = Integer.parseInt(s);
每个基本类都对应一个包装类(首字母大写),包装类提供一个parseXxx(String str)静态方法用于将字符串转换成基本类型。
3.5.3 表达式类型的自动提升
一个算术表达式包含多个基本类型时,整个表达式的数据类型会自动提升,
所有byte,short,char类型自动提升为int
整个算术表达式的数据类型提升为最高等级操作数类型。
3.6 直接量
直接给出的值
3.6.1直接量的类型
基本类型、字符串、null
3.6.2直接量的赋值
直接赋值给相应类型的变量
字符串常量,Java会确保每个字符串常量只有一个,不会产生多个副本
3.7 运算符
算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符
3.7.1 算术运算符
+、-、*、/、%、++、–
3.7.2 赋值运算符
=
3.7.3 位运算符
3.7.4 扩展后的赋值运算符
+=,-=,…
3.7.5 比较运算符
>, >=,==,<=,<,!=
==比较两个引用变量时,只有两个引用指向同一个对象时才为true。
3.7.6 逻辑运算符
&&
&(不短路与)
||
|(不短路或)
!
^(异或)
3.7.7三目运算符
(expression) ? if-true-statement : if-false-statement;
对expression求值,如果true,返回f-true-statement,如果false,返回if-false-statement;
3.7.8 运算符的结合性和优先级
大部分从左向右
优先级表不需要背!使用()控制执行顺序。
附录 本章练习
1.定义学生、老师、教室三个类,为三个类编写文档注释,并使用javadoc工具生成API文档。
/** * Description: * doc测试 * @author pigeon * @version 0.1 */ public class Testdoc{ /** * Description: * 学生类 */ protected class Student{ /** * 成员变量 */ protected int age; protected String name; /** * Student构造器 * @param age,年龄 * @param name,姓名 */ protected Student(int age,String name){ this.age = age; this.name = name; } } protected class Teacher{ /** * 成员变量 */ protected int age; protected String name; } protected class Classroom{ protected int number; protected boolean Empty = true; /** * 查看教室是否为空 * @return Empty 返回是否为空 */ protected boolean isEmpty(){ return Empty; } } }
使用javadoc生成API文档:
javadoc -d apidoc -windowtitle 测试 -doctitle 学生、老师、教室的API文档 Testdoc.java
2.使用8种基本数据类型声明多个变量,并用不同方式为8种基本类型的变量赋值,熟悉每种类型的赋值规则和表示方式。
public class Test2{ public static void main(String[] args){ System.out.println("Hello"); byte bt = 1; short st = 12; int it = 123; long lt = 1234; char c = 'A'; System.out.print(c); float ft = 1.12f; double dt = 3.14159; boolean b = true; } }
3.在数值型的变量之间进行类型转换,包括低位向高位的自动转换,高位向低位的强制转换。
public class Test3{ public static void main(String[] args){ int it = 123456; long lt = it;//自动转换 double dt = 2.13; float ft = (float)dt;//强制转换 System.out.println("Ok"); } }
4.使用数学运算符、逻辑运算符编写40个表达式,先自行计算各表达式的值,然后通过程序输出进行对比。
//40个太多了,就写了几个 public class Test4{ public static void main(String[] args){ int i1,i2; i1=1;i2=2; System.out.println("i1+i2="+(i1+i2)); System.out.println("i1-i2="+(i1-i2)); System.out.println("i1*i2="+(i1*i2)); System.out.println("i1/i2="+(i1/i2)); double d1= 1.1;double d2 = 1.2; System.out.println("d1+d2="+(d1+d2)); System.out.println("d1-d2="+(d1-d2)); System.out.println("d1*d2="+(d1*d2)); System.out.println("d1/d2="+(d1/d2)); } }