数据类型和运算符
1 强类型语言特征
1 所有变量先声明,后使用,2 指定类型变量只能接收类型与之匹配的值。
可以在编译过程中发现源码的错误,程序健壮。
2 基本类型
1 数值类型 整型,字符型,浮点型 可以经行类型转换(自动,强制)
2 布尔类型
3 注释
1 单行注释 //
2 多行注释 /* */
3 文档注释 /** */
4 api文档
应用程序接口文档,主要说明类,方法,field的功能,因此,Javadoc 工具只处理文档源文件在类,接口,方法,field,构造器,内部类之前的注释,忽略其他地方的文档注释,并且只处理public 或protected修饰的。
5 javadoc 命令 Javadoc 选项 Java源文件/包
可以对源文件,包生成api文档,支持通配符 *.java 当前目录下所有Java文件
-d 指定一个路径,将生成的api放入该目录 -windowtitle 选定一个字符串设置api文档浏览器窗口标题 -doctitle 概述页面标题(多个包) -header 包含每个页面的页眉
6 标识符
用于给程序中变量,类,方法命名的符号。必须以字母,下划线(_),美元符($)开头,后面可以跟任意数目的字母,数字,下划线和美元符。字母不局限于26个英文字母,可以包含中文日文字符,不能使用Java关键字和保留字。
7 关键字
特殊用途的单词,全部小写,48个关键字,2个保留字(goto const) 3个直接量 true false null
8 强语言 变量和表达式在编译时期就确定了类型,先申明后使用
9 基本类型 boolean类型 数值类型(整型byte short int long char浮点型 float double)
10 引用类型 对一个对象的引用 ,对象包括实例和数组,引用类型包括类,接口,数组类型。
11 空类型就是null值类型,空引用(null)可以转换为任何引用类型
12 基本数据类型
一个Java整数常量默认就是int类型,1如果将一个较小的整数常量(在byte或short类型范围内)赋值给一个byte或short变量,系统会自动把这个常量当byte或short处理2 如果使用一个巨大常量(超int表数),Java不会把他当long处理,需要在后面加L
整数常量有4中表达方式 二,八(0开头),十六进制(0x开头)
byte a = 56; // 系统把56当byte类型处理 long b = 999999999999999; //错 long c = 999999999999999L; //对 int octal = 013; int hex = 0xaf;
Java7 新增了二进制整数以0b开头。byte c = (byte)0b1111111111; //错 溢出
字符型:有3中形式,1 单个字符‘A’, 2 转义字符表示特殊字符常量 '\n' '\t' 3 通过unicode值表示范围'\u0000' - '\uffff' 65535个字符。
Java语言单引号,双引号,反斜线有特殊用途,如果字符串中包含了这些字符,应该使用转义字符表示形式。
char c = 'A'; char b = '\t'; char a = '\uffff';
浮点数:float double 浮点数有固定的表数范围和字段长度,与机器无关。有两种表示形式 1 十进制 4.09 2 科学计数形式 5.12e(E)2
Java提供三个特殊浮点值 正,负无穷大,非数。可以通过Float或Double的静态域获得 所有正无穷大都相等,所有负无穷大相等,非数与任何数不想等。
System.out.println(Float.NEGATIVE_INFINITY == Double.NEGATIVE_INFINITY); // true System.out.println(Float.NaN == Double.NaN); // false
基本类型的类型转换
自动转换:如果系统支持把某种基本类型的值直接赋给另一个基本类型的变量,则这种方式被称为自动类型转换,如果把一个表数范围小的数或变量直接赋给另一个表数大的变量,系统进行自动类型转换。Java支持自动类型转换如图中箭头
int a = 4; float f = a; System.out.println(f); // 输出4.0 byte b = 9; char c = b ;// 错 double d = b;
强制类型转换:如果希望把箭头右边的类型转换为左边的类型,必须经行强制类型转换,格式(TargetType)value,可能会造成数据丢失
float f = (float)3.14; int a = 333; byte b = (byte)a; System.out.println(b); //输出77
表达式类型自动提升: 1 所有byte short char 将被提示为int 2 整个表达式的数据类型自动提示到与表达式中最高等级操作数相同类型。
short a = 0; a = a - 2; // 错 a自动提升为int int b = 7; b = 7 / 2; // 为3 自动截断小数部分 System.out.println(7 + 'a' + "hello"); //输出 "104hello"; System.out.println("hello" + 7 + 'a');// 输出"hello7a";
13 直接量是指在程序中通过源代码直接指定的值,直接量的类型有3种,基本类型,字符串,null类型。通常把直接量赋值给对应类型的变量。常量池指在编译期确定,并保存在已编译的.class文件中的一些数据。
14 运算符
一种特殊的符号,表示数据的运算,赋值,比较,使用运算符将一个或多个操作数连成执行性语句,用以实现特定功能。
1 算数运算符 - + * /(两个整数相除,结果整数,10/3=3, 如果有浮点数,结果为浮点数) % (结果不一定总是整数,使用第一个操作数除以第二个操作数,得到一个整数结果后,剩下的值为余数。也就是先除,如果两个为整数,第二个不能为0,除0异常)++ --
System.out.println(3.3 % 2); System.out.println(3.0 % 0); System.out.println(3 % 2); 1.2999999999999998 NaN 1
2 赋值运算符 = 赋值表达式也是有值的,就是右边被赋的值,可以一次为多个变量赋值 a=b=c = 1;
3 位运算符 & | ~ ^ << >> >>>(无符号右移)
4 比较运算符 判断两个变量或常量大小。结果为布尔值。> >= < <= 只能用于数值比较。== != 数值类型和引用类型。如果是数值类型,即使类型不同,只要值相同,返回true 97==‘a’ 5.0 == 5 ,引用类型,是同一个类的实例才可以比较,指向相同对象,才为true , 两个boolean类型也可以比较 true==false 返回false。
5 逻辑运算符,操作两个布尔变量或常量
&& & (不断路与) || |(不断路或) ! ^(异或)两个操作数不同才返回true
6 三目运算符 (expression) ? if-true-statment : if-flalse-statement;
System.out.println(5 > 3 ^ 'a' < 3); int a = 10; if (5 > 4 | a++ > 90) { System.out.println(a); } a = 10; if (5 > 4 || a++ > 90) { System.out.println(a); }
true 11 10