编程语言
首页 > 编程语言> > 0531 Java核心技术卷1

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