0531 Java核心技术卷1
作者:互联网
3.3 数据类型
1.整型
整型用于表示没有小数部分的数值,他允许是负数,Java提供了四种整型
类型 | 存储需求 | 取值范围 |
int | 4字节 | -2 147 483 648~2 147 483 647(正好超过20亿) |
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类型最常用,byte和short类型主要用于特定的应用场合,比如底层的文件处理或者需要控制占用存储空间量的大数组
长整型数值有一个后缀L或l(如4000000000L).十六进制数值有一个前缀0x或0X(如0xCAFE).八进制有一个前缀0(如010对应八进制中的8),八进制表示法比较容易混淆,所有建议最好不要使用八进制常数
从Java7开始,加上前缀0b或者0B就可以写二进制数(0b1001是9),同样是java7开始,还可以在数字前加下划线以便阅读(1_000_000表示一百万或者0b1111_0100_0010_0100_0000表示一百万),Java编译器会自动去除这些下划线,只是为了人可以方便阅读
2.浮点类型
浮点类型用于表示有小数部分的数值,在Java中有两种浮点类型
类型 | 存储需求 | 取值范围 |
float | 4字节 | 大约±3.402 823 47E+38F(有效位数为6~7位) |
double | 8字节 | 大约±1.797 693 134 862 315 70E+308(有效位数为15位 |
double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值).绝大部分应用程序都采用double类型,很多情况下,float类型的精度很难满足需求.只有很少的情况适合使用float类型,例如需要单精度数据的库,或者需要存储大量数据
float类型的数值有一个后缀F或f(如3.14f).没有后缀F的浮点数值默认为double类型,当然,也可以在浮点数值后面添加后缀D或者d(如3.14d),可以使用十六进制表示浮点数值,0.125=2的负三次方可以表示成0x1.0p-3,在十六进制表示法中,使用p表示指数,尾数采用十六进制,指数采用十进制,指数的基数是2,而不是10
3.char类型
char类型原本用于表示单个字符,如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值
char类型的字面量值要用单引号括起来,例如,'A'是编码值为65所对应的字符常量,他与"A"不同,"A"是包含一个字符A的字符串.char类型的值可以表示为十六进制数,其范围从\u0000到\uffff
除了转义序列\u之外,还有一些用于表示特殊字符的转义序列,所有这些转义序列都可以出现在加引号的字符字面量或字符串中(如:'\u212'或"Hello\n")
特殊字符的转义序列
转义序列 | 名称 | Unicode值 |
\b | 退格 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\" | 双引号 | \u0022 |
\' | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
4.Unicode和char类型
Unicode标准为每个字符提供了唯一的编号,无论使用何种平台,设备,应用程序或语言。它已被所有现代软件提供商采用,现在允许数据通过许多不同的平台,设备和应用程序进行传输而不会损坏。
强烈建议不要在程序中使用char类型,除非确实需要处理UTF-16代码单元
5.boolean类型
boolean类型有两个值:false和true,用来判定逻辑条件,整型值和布尔值之间不能进行相互转换
3.4 变量
在声明变量时,变量的类型位于变量名之前,变量名必须是一个以字母开头并由字母或数字构成的序列,字母包括'A'~'Z','a'~'z','_','$',数字包括'0'~'9'
不能使用Java保留字作为变量名
变量名中所有的字符都是有意义的,并且大小写敏感,变量名的长度基本上没有限制
逐一声明每一个变量可以提高可读性
1.变量初始化
变量名放在等号左侧,相应取值的Java表达式放在等号的右侧
变量的声明尽可能地靠近第一次使用的地方
2.常量
在java中,利用关键字final指示常量,关键字final表示这个常量只能被赋值一次,一旦被赋值以后不可以更改,在习惯上常量名全部大写
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量成为类常量,可以使用关键字static final设置一个类常量
public cl ass Constants〗 { public static final double CM_PER_INCH = 2.54; public static void main(Stringn args) { double paperWidth = 8.5; double paperHeight = 11; System.out.println("Paper size in centimeters: " + paperWidth * CMJERJNCH + by " + paperHeight * CM_PER_INCH) ; } }
类常量定义位于main方法的外部,因此同一个类的其他方法也可以使用这个常量,如果一个常量被声明为public,那么其他类的方法也可以使用这个常量
3.5 运算符
+,-,*,/ 两个整数除运算表示整数除法,否则为浮点除法.整数的求余操作用%表示
整数被0除会产生一个异常,浮点数被0除会得到无穷大或NaN结果
1.数学函数与常量
在Math类中,包含了各种各样的数学函数,sqrt方法计算平方根
借助Math类的pow 方法可以进行幂运算 double y=Math.pow(x,a);y=x的a次幂
Java 中的取余运算是 %,而取模运算是 Math.floorMod()。
取模运算结果的符号和 被除数 一致,取余运算结果的符号和 除数 一致
Math类提供了一些三角函数:
Math.sin Math.cos Math.tan Math.atan Math.atan2
指数函数以及反函数--自然对数以及 以十为底的对数:
Math.exp Math.log Math.log10
用于表示 PI 和 e 常量的近似值
Math.PI Math.E
2.数值类型之间的转换
实心箭头表示无信息丢失的转换,虚箭头表示可能有精度缺失的转换
如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
•否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。
•否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
•否则, 两个操作数都将被转换为 int 类型。
3.强制类型转换
double x=9.997
int nx= (int) x;
此时nx的值为9
int nx = (int) Math,round(x);
此时变量nx的值为10,round方法进行了舍入运算,以获得最接近的整数
4.结合赋值和运算符
x+=4;表示x=x+4;
5.自增与自减运算符
n++将变量的当前值加一,n--将n的值减一
// n++与++n的区别
int m=7; int n=7; int a=2*++m; // a=16,m=8 int b=2*n++; // b=14,n=8
6.关系和boolean运算符
要检测相等性,可以使用两个等号,例如 3==7 的值为false
还可以使用!=检测不等性 例如 3!=7 的值为true
经常使用的运算符还有: < , > , <= , >= , && , ||
java支持三元操作符 ?:
condition ? expression1:expression2
如果条件成立,输出expression,否则输出expression2
7.位运算符(摘自 https://www.cnblogs.com/SunArmy/p/9837348.html )
&与,|或,^异或,~非
&与: 4&7 先把两个十进制的数转换为8位(一个字节有8位)二进制,再每位进行与运算
|或: 5|9 计算方法与"与"相同
^异或: 7^15 计算方法同"与"
~取反: ~15 每位取反即可
<<左移运算 12<<2 意思是12向左移动两位
所有的位全部左移两位,然后把右边的两个位用0补上,左边多出的两位去掉,结果为48
12 << 3结果是 96 M << n = M * 2n
>>右移运算 12 >> 2
右移和左移其实是一样的,唯一的不同在于正负数补位补的数不一样,负数补1,整数补0
M >> n = M / 2^n
>>>无符号右移
和右移一样,区别在于补位只补0
8.括号与运算符级别(数字越小级别越高)
9.枚举
枚举类型包括有限个命名的值,例如
enum Size(SMALL,MEDIUM,LARGE,EXTRA)LARGE)
现在可以声明这种类型的变量:
Size s=Size.MEDIUM
Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者null值
3.6 字符串
Java类库中提供了一个预定义类,叫做String,每个有双引号括起来的字符串都是String类的一个实例
1.子串
String greeting="hello" String s=greeting.substring(0,3);// s为"Hel"
substring发放的第二个参数是不想复制的第一个位置,substring有一个优点:容易计算子串长度
2.拼接
Java语言允许使用+拼接两个字符串,这种特性通常用在输出语句中,如:
System.out.println("The answer is" + answer);
如果需要把多个字符串放在一起,并用一个界定符"/"隔离,可以使用静态join方法:
String all =String.join("/","S","M","L",XL") // 结果为S/M/L/XL
3.不可变字符串
String类没有提供用于修改字符串的方法,所以String类对象被称为不可变字符串
4.检测字符串是否相等
可以使用equals方法检测两个字符串是否相等
s.equals(t)
如果字符串s和字符串t相等,则返回true,否则返回false
如果想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法
"Hello".equalsIgnoreCase("hello");
5.空串与NULL串
空串""是一个长度为0的字符串,可以调用
if(str.length()==0)
或
if(str.equals(""))
进行空串检测
空串是一个java对象,有自己的串长度(0)和内容(空)
6.码点与代码单元
码点:就是某个任意字符在Unicode编码表中对应的代码值
代码单元:是在计算机中用来表示码点的,大部分码点只需要一个代码单元表示,但是有一些是需要两个代码单元表示的。
7.String API
8.阅读联机API文档
9.构建字符串
如果需要用许多小段的字符串构建一个字符串,那么可以使用StringBuilder类
首先,构建一个空的字符串构建器:
StringBuilder builder=new StringBuilder();
当每次需要添加一部分内容时,就调用append方法
builder.append("ch");
builder.append("str");
在需要构建字符串时就调用toString方法,可以得到一个String对象
String completedString = builder.toString();
3.7 输入输出
1.读取输入
首先需要构造一个Scanner对象,并与"标准输入流"System.in关联
Scanner in = new Scanner(System.in);
现在就可以调用Scanner类的各种方法实现输入操作,例如:
nextLine()方法将读取一行
next()方法读取一个单词
nextInt()方法读取一个整数
nextDouble()方法读取下一个浮点数
同时不要忘了导包
import java.util.*;
2.格式化输出
System.out.print()进行输出
System.out.printf()可以进行格式化输出,例如
System.out.printf("%8.2f",x);另外,还可以给出控制格式化输出的各种标志。例如,逗号
标志增加了分组的分隔符。 即
Systen.out.printf("%,.2f", 10000.0 / 3.0);
打印 3,333.33
标签:0531,Java,常量,核心技术,double,类型,字符串,Math,String 来源: https://www.cnblogs.com/aLin002/p/12996872.html