Java复习笔记(1)——Java支持数据类型和相关操作

(p.s:快找工作了,有必要把基础知识复习一下 )
参考书籍:《Java核心技术》(第9版,卷1) 
电子书见:
http://download.csdn.net/detail/octopusflying/9617055
 
  
    Java
中有8种基本数据类型:4种整型(byte、short、int、long),2种浮点类型(float、double)、1种表示Unicode编码的字符单元的字符类型(char),1
种表示是非的布尔类型(boolean)。


整数类型

1、Java中有8种基本数据类型:4种整型、2种浮点类型、1种表示Unicode编码的字符单元的字符类型,1种表示是非的布尔类型。

2、4种整型类型:

类型

存储需求

取值范围

int

4字节

-2147483648 ~ 2147483647

short

2字节

-32768 ~ 32767

long

8字节

-9223372036854775808 ~ 9223372036854775807

byte

1字节

-128 ~ 127

Java中,整型的范围与运行Java代码的机器无关,保证在所有机器上都能得到相同的运行结果。

3、长整型数值有一个后缀L,十六进制数值有一个前缀0x,八进制有一个前缀0。八进制表示法比较容易混淆,最好不要使用。

4、Java7开始,加上前缀0b即可以写二进制数。

5、Java7开始,可以在数字中加下划线(1_000_000)。加下划线只是为了然人更易读,Java编译器会去除这些下划线。


浮点类型

1、两种浮点类型:

类型

存储需求

取值范围

float

4字节

大约±3.40282347E+38F(有效位数为6-7)

double

2字节

大约±1.79769313486231570E+308(有效位数为15)

2、float类型有一个后缀F,没有后缀F的浮点数值默认为double类型,也可以在浮点数值后加后缀D

3、Java中所有浮点数值都遵循IEEE 754规范。

4、用于表示溢出和出错情况的三个特殊浮点数值:

a) 正无穷大:Double.POSITIVE_INFINITY

b) 负无穷大:Double.NEGTIVE_INFINITY

c) NaN:不是一个数字。Double.NaN

5、一个正整数除以0结果为正无穷大。计算0/0或者负数的平方根结果为NaN


字符类型

1、char类型用于表示单个字符。

2、\u表示Unicode编码单元。 

public static void main(String\u0058\u005D args)

3、特殊字符和转义序列符

转义序列

名称

Unicode

转义序列

名称

Unicode

\b

退格

\u0008

\

双引号

\u0022

\t

制表

\u0009

\

单引号

\u0027

\n

换行

\u000a

\\

反斜杠

\u005c

\r

回车

\u000d

 

 

 


布尔类型

1、boolean类型有两个值:falsetrue,用于判定逻辑条件。整型值和布尔值之间不能相互转换。


变量

1、每一个变量属于一种类型。在声明变量时,变量所属的类型位于变量名之前。

2、变量名必须是一个以字母开头的由字母或数字构成的序列。字母包括:A ~ Za ~z_$ 或在某种语言中代表字母的任何unicode字符。数字包括0 ~ 9 和在某种语言中代表数字的任何Unicode字符。

3、变量中不能出现+、不能出现空格。

4、变量名大小写敏感,长度没有限制。

5、尽管 $ 是一个合法的字符,但不要在自己的代码中使用这个字符。它只用在Java编译器或其他工具生成的名字中。

6、声明一个变量后,必须使用赋值语句对变量进行显示初始化,Java编译器认为使用未初始化的变量的做法是错误的。

7、变量的声明尽量靠近变量第一次使用的地方,这是一种良好的程序编写风格。

常量

1、Java中,利用关键字final指示常量。

2、关键字final表示的变量只能被赋值1次,一旦被赋值之后,就不能再改变。

3、习惯上,变量名使用全大写。

运算符

1、Java中,使用 +-*/ 表示加、减、乘、除运算。

2、当参与除法运算的两个操作数都是整数时,表示整数除法(结果仅保留整数部分);否则表示浮点除法。

3、整数的求余操作用 % 表示

4、整数被0除将会产生一个异常,浮点数被0除将会得到无穷大或NaN结果。

5、可以在赋值语句中采用一种简化格式书写二元算术运算符:

x += 4;  等价于  x = x + 4;

66、 Java中,借鉴了CC++的实现方式,也使用了自增、自减运算符: n++n--

7、自增、自减运算符的操作数不能是数值。(4++是非法的)

8、Java包含各种关系运算符。==(相等)>=(大于等于)<=(小于等于)

9、Java沿用了C++的习惯,用&&表示逻辑“与”, 用 || 表示逻辑“或”、用 表示“非”。

10、&&  || 按照短路方式求值。

11、Java支持三元操作符 ? :

12、在处理整型数值是,可以直接对组成整型数值的各个位进行操作。可以使用屏蔽技术获得证书中的各个位。

13、位运算符包括:&()|()^(异或)~()

14、使用 >>  << 运算符将二进制位进行右移或左移操作(算术移位)>>> 0填充最高位(逻辑移位),没有 <<< 运算符。

数学函数与常量

1、Math类中,包含了各种各样的数学函数。

//平方根:

    Math.sqrt(x)

//幂运算:

    Math.pow(x, a)

//三角函数:

    Math.sin(x)

    Math.cos(x)

    Math.tan(x)

    Math.atan(x)

    Math.atan2(x)

//指数、对数函数:

    Math.exp(x)

    Math.log(x)

    Math.log10(x)

//常数:

    Math.PI

    Math.E

2、不必在所有数学方法名和常量名前加前缀Math,只要在源文件的顶部加上下面这行代码就可以了:

import static java.lang.Math.*;


数值类型之间的转换

1、数值类型之间的合法转换:

 

图中实线箭头表示无损转换,虚线箭头表示有损转换,转换过程肯能会丢失精度。

2、当进行二元操作运算时,需要先将连个操作数转化为同一种类型,然后再进行计算:

 ·如果两个操作数中有一个是double类型,另一个操作数就会转化为double类型。

  ·否则,如果其中一个操作数是float类型,另一个操作数将会转化为float类型。

     ·否则,如果其中一个操作数是long类型,另一个操作数将会转化为long类型。

     ·否则,两个操作数都转化为int类型。

3、Java中允许强制类型转换。

4、&&运算符的优先级比||运算符高、+= 和 -= 是右结合运算符。


枚举类型

1、Java可以自定义枚举类型,枚举类型包括有限个命名的值。

enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };

Size s = Size.MEDIUM;

字符串

1、Java字符串就是Unicode字符序列。

2、substring方法可以获得一个字符串的子串。(substring(a, b)a:子串开始位置,b:子串结束的位置,不包括下标b,即b为第一个不想复制的位置)

3、可以使用 + 号对字符串进行拼接。

4、当将一个字符串和一个非字符串的值进行拼接时,后者将会转换成字符串。

5、Java中的字符串是不可变的。

6、使用equals方法检测两个字符串是否相等,不可以使用 ==

7、注意空字符串和null串的区别。

8、常用的字符串方法:

char charAt(int index) //返回指定的代码单元

int codePointAt(int index) //返回从指定位置开始或结束的代码点。



int offsetByCodePoints(int startIndex, int cpCount) 

//返回从startIndex开始,位移cpCount后的代码点索引。



int compareTo(String other) 

//按照字典顺序,如果字符串为与other之前,返回一个负数,如果字符串位于other之后,返回一个整数,如果

//字符串相等,返回0。



boolean endsWith(String suffix) //如果字符串以suffix结尾,返回true

boolean equals(Object other) //如果字符串与other相等,返回true。

boolean equalsIgnoreCase(String other) //如果字符串与other相等(忽略大小写),返回true。



int indexOf(String str)

int indexOf(String str, int fromIndex)

int indexOf(int cp)

int indexOf(int cp, int fromIndex) 

//返回与字符串str或代码点cp匹配的第一个子串的开始位置。这个位置从索引0或fromIndex开始计算,如果在原

//始串中不存在str, 返回-1。



int lastIndexOf(String str)

int lastIndexOf(String str, int fromIndex)

int lastIndexOf(int cp)

int lastIndexOf(int cp, int fromIndex)

//返回与字符串str或代码点cp匹配的最后一个子串的开始位置。这个位置从索引0或fromIndex开始计算,如果在

//原始串中不存在str, 返回-1。



int length() //返回字符串长度。

int codePointCount(int startIndex, int endIndex)

//返回startIndex 和 lastIndex -1 之间的代码点数量。没有配成对的代用字符将计入代码点。

String replace(CharSequence oldString, CharSequence newString) 

//返回一个新字符串。这个字符串用newString代替原始字符串中所有的oldString。可以用String       

//或StringBuilder对象作为CharSequence参数。

boolean startsWith(String prefix)//如果字符串以prefix字符串开始,返回true。

String substring(int beginIndex)

String substring(int beginIndex, int endIndex)

//返回一个新字符串。这个字符串包含原始字符串中从beginIndex到串尾或endIndex-1的所有代码单元。

String toLowerCase()//返回一个新字符串。这个字符串将原始字符串中所有大写字母改成了小写字母

   String toUpperCase()//返回一个新字符串。这个字符串将原始字符串中所有的小写字母改成了大写字母。

   String trim() //返回一个新字符串。这个字符串删除了原始字符串头部和尾部的空格。


9、可以使用StringBuilder类构建字符串:

String BuilderBuilder= newStringBuilder();

builder.append(ch); // append a single character.

builder.append(str); // append a string.


数组

1、数组是一种数据结构,用来存储同一类型值的集合。

2、通过一个整型达标可以访问数组中的每一个值。

3、使用new运算符创建数组: 

int[] a = new int[100];

4、创建一个数字数组时,所有元素都初始化为0boolean数组的元素会初始化为false。对象数组的元素则初始化为一个特殊值null,表示这些元素还为存放任何对象。

5、foreach 循环:Java有一种功能很强的循环结构,可以用来一次处理数组中的每个元素,而不必为指定下标而分心,格式如下:

 for(variable : collection) { statements; }

6、可以使用Arrays类的toString方法来打印数组。打印结果将元素放置在括号内,并用逗号分隔,例如:[2, 3, 5, 7, 11, 13]

7、Java提供了一种创建数组对象并同时赋予初始值的简化书写形式:  

int[] smallPrimes = {2, 3, 5, 7, 11, 13};

    new int[] {17, 19, 23, 29, 31, 37};

8、Java中,允许数组长度为0。在编写一个结果为数组的方法时,如果碰巧结果为空,则郑重语法形式就显得非常有用。

9、Java中,允许将一个数组变量拷贝给另一个数组变量。这是两个变量引用同一个数组:

    int[] luckyNumbers = smallPrimes;

    luckyNumbers[5] = 12 // now smallPrimes[5] is also 12.

10、如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:   

int[] copiedLuckyNumbers =

    Arrays.copyOf(luckyNumbers, luckyNumbers.length);

2个参数是新数组的长度。这个方法通常用来增加数组大小。

11、Java没有指针运算,不能通过a + 1 得到数组的下一个元素。

12main方法接收一个字符串的数组作为参数,这个参数是命令行参数。

13、可以采用Arrays类中的sort方法对数组进行排序。

14、Java支持多维数组。但实际上并没有多维数组,只有一维数组,事实上,多维数组可以被解释为“数组的数组”。因此,Java中可以定义“不规则的数组(每一行具有不同的长度)”。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值