目录
数据类型
Java是强类型语言,这意味着必须为每一个变量声明一种类型,共有8中数据类型:
整型
表示没有小数部分的值,如1,2,3等
Java共有4种整型:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
short | 2字节 | -32 768 ~ 32 767 |
long | 8字节 | -9 223 372 036 854 775 808 ~ -9 223 372 036 854 775 807 |
byte | 1字节 | -128 ~ 127 |
通常情况下int最常用
浮点类型
Java中由2中浮点类型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约±3.402 823 47E + 38 F(有效位数为6~7位) |
double | 8字节 | 大约 ± 1.797 693 134 862 315 70E+308 (有效位数为 15 位> |
double 表示这种类型的数值精度是 float 类型的两倍(有人称之为双精度数值)。绝大部 分应用程序都采用 double 类型。在很多情况下,float 类型的精度很难满足需求。实际上,只 有很少的情况适合使用 float 类型,
float 类型的数值有一个后缀 F 或 f (例如,3.14F。) 没有后缀 F 的浮点数值(如 3.14 ) 默 认为 double 类型。当然,也可以在浮点数值后面添加后缀 D 或 d (例如,3.14D) 。
char类型
char 类型原本用于表示单个字符。如今,有些 Unicode 字符可以用一个 char值描述,另外一些 Unicode 字符则需要两个 char 值。
char 类型的字面量值要用单引号括起来。
特殊字符的转义序列
转义序列 | 名称 | Unicode 值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\ " | 双引号 | u0022 |
’ | 单引号 | \u0027 |
\ | 反斜杠 | u005c |
Unicode 转义序列会在解析代码之前得到处理。
Unicode 和 char类型
Unicode是一种编码类型与ASCII,utf-8编码类似
Unicode 编码的目的:
- 任意给定的代码值,在不同的编码方案下对应相同的字母
- 采用大字符集的语言使其编码长度相同
强烈建议不要在程序中使用 char 类型,除非确实需要处理 UTF-16 代码单元。
boolean类型
boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件 整型值和布尔值之间 不能进行相互转换。
变量
在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之前。
比如:
int a;
double b;
每个声明以分号结束
变量名命名规范:
- 必须以字母开头
- 可使用数字和下划线等
- 变量名不能是Java关键字
- 大小写敏感,区分大小写
变量初始化
声明一个变量之后,必须用赋值语句对变量进行显式初始化, 千万不要使用未初始化的 变量。
int a = 12;
或
int a;
a = 12;
以上两种初始化方式都正确
变量的声明尽可能地靠近变量第一次使用的地方
常量
在 Java 中, 利用关键字 final 指示常量
如:
final int A = 12;
关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上, 常量名使用全大写。
在 Java 中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为 类常量。可以使用关键字 static final 设置一个类常量。
如:
public class HelloWorld {
static final double NUM_MAX = 12;
public static void main(String[] args) {
double a = NUM_MAX + 1;
System.out.println(a);
}
}
类常量的定义位于 main方法的外部
如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量
运算符
算术运算符:
+、-、 * 、/ 表示加、减、 乘、除运算
数学函数与常量
在 Math类中,包含了各种各样的数学函数。
如:
-
求一个数值的平方根
int b = 20; Math.sqrt(b);
-
幂运算,x的a次方幂
int a = 20; //表示a的3次幂 Math.pow(a,3);
-
三角函数
Math.sin(2); Math.cos(2); Math.tan(2);
-
指数函数
//e的2次幂 Math.exp(2);
-
对数函数
//自然对数 Math.log(5); //以10为底的对数 Math.log10(100);
-
Π和 e 常量的近似值
double pi = Math.PI; double e = Math.E;
数值类型之间的转换
经常需要将一种数值类型转换为另一种数值类型。
数据类型之间合法转换图:
实心箭头:表示无信息丢失的转换
虚箭头: 表示可能有精度 损失的转换。
在不同类型的数据进行运算时,可以将两种数据转换为同种类型之后再进行计算。
强制类型转换
int类型可以自动的转换为double类型,但是double类型转int类型需要进行强制类型转换
转换方式:
double a = 15.35;
int b = (int) a;
当然这种方式会丢失一些信息,double转int就会截断小数部分。
如果希望小数部分再转换时四舍五入,使用下述方式:
double a = 15.65;
int b = (int) Math.round(a);
结合赋值和运算符
可以在赋值中使用二元运算符。如:
int a = 0;
a += 3;
表示:a = a + 3;
相应的还有:
a -= 3;
a *= 3;
a /= 3;
a %= 3;
自增和自减运算符
程序中加1、减1是数值变量最常见的操作
自增有两种形式:
int a = 0;
//a++和++a都会使a的数值加1
//a++在等式中,先赋值后加1
int b = a++;
System.out.println(b);
//++a先+1再赋值
int c = ++a;
System.out.println(c);
输出结果分别是:0 和 2
关系运算符、逻辑运算符和boolean运算符
与:&&,表示同真,并且
或:|| ,只要满足一个条件就成立
非:!,表示否定
相等: ==,表示数值相等
不等:!= 表示数值不相等
常用于if条件语句的判断条件
boolean运算符:true or false
括号和运算符级别
Java中括号和运算符级别满足正常的数学计算方式
位运算符
位运算符包括:
& (“and”)
| (“or”)
-
^(“xor”)
- (“not”)
可以对每个二进制位或者十六进制位等操作
>>和<<运算符将位模式左移或右移
移位时会用其符号位填充高位或者低位
>>> 运算符会用 0 填充高位
枚举类型
变量的取值只在一个有限的集合内。
如:人的性别只有男和女
针对这种情况我们可以自定义这种变量类型,具体在第4张介绍