java 语言基础
—— 我的java 太菜,只能一步一步来,呵呵~
一、java 数据类型
byte---Byte
short---Short
int---Integer
long---Long
float---Float
double---Double
char---Character
boolean---Boolean
|
基本类型有以下四种:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float长度数据类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
转换原则
从低精度向高精度转换
a. byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
b. 强制类型转换
1)截断
float a=34.56734;
int b=(int) a;
2)缩小转化
int a=32;
byte b=(byte)a;
基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
基本类型向字符串的转换
正向转换:
如:int a=12;
String b;b=a+””;
反向转换:
通过类包装器
eg1:int i=Integer.parseInt(“123”)
说明:此方法只能适用于字符串转化成整型变量
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
五、java运算符
一、算术运算符
所谓算术运算符,也就是我们数学中学到的加、减、乘、除等运算。这些操作可以对几个不同类型的数字进行混合运算,为了保证操作的精度,系统在运算的过程中会做相应的转换。
1、数字精度
所谓数字精度,也就是系统在做数字之间的算术运算时,为了尽最大可能地保持计算机的准确性,而自动进行相应的转换,将不同的数据类型转变为精度最高的数据类型。规则如下:
1)当使用运算符把两个操作数结合到一起时,在进行运算前两个操作数会转化成相同的类型。
2)两个操作数中有一个是double类型的,则另一个将转换成double型。
3)两个操作数中有一个是float类型的,则另一个将也转换成float型。
4)两个操作数中有一个是long类型的,则另一个将也转换成long型。
5)任何其它类型的操作,两个操作数都要转换成int类型。
2、整数型运算(int型)
对于int型的相关操作,加、减、乘的结果都是非常容易理解的,重点讲一下除(/)的运算。
两个整数相除的结果是整数,这一点与数学中是不同的,在Java中,两个整数相除的结果类似于数学中的求模运算。整除的余数是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。我们用程序验证一下:
int a = 15;
int b = 2;
double c = 2;
a/b; a%b; a/c ;a%c;
输出结果:
15 / 2 = 7
15 % 2 = 1
15 / 2.0 = 7.5
15 % 2.0 = 1.0
3、自增和自减运算符
在循环与控制中,我们经常会用到类似于计数器的运算,它们的特征是每次的操作都是加1或减1。在Java中提供了自增、自减运算符,X++使变量X的当前值每次增加1,而X--是自减运算符,每次操作使当前X的值减1。例如:
/*测试自增、自减操作*/
int x = 10;
int a = x+ x++;
int b = x + ++x;
int c = x + x--;
int d = x + --x;
输出结果:
a = 20
x = 11
b = 23
x = 12
c = 24
x = 11
d = 21
x = 10
int x = 10;
int a = ( x++)+x;
注意:输出结果:
a=21; x=11;
二、关系运算符
Java具有完美的关系运算符。这些关系运算符基本上同数学中的关系运算符是一致的。“>”大于、“<”小于、“>=”大于等于、“<=”小于等于、“==”等于、“!=”不等于。例如:
/*关系运算符测试*/
boolean x, y, z;
int a = 15;
int b = 2;
double c =15;
x = a > b; //true;
y = a < b; //false;
z = a != b; //true;
三、逻辑运算符
在Java语言中有四种逻辑运算符,它们是NOT(非,以符号“!”表示)、AND(与,以符号“&&”表示、)OR(或,以符号“||”表示),XOR(异或,^)
& - 逻辑与
| - 逻辑或
^ - 逻辑异或
! - 逻辑反
A B A&B A|B A^B !A
true false false true true true
false true false true true true
false false false false false true
true true true true false false
/*逻辑运算符测试*/
boolean x, y, z, a, b;
a = 'a' > 'b';
b = 'R' != 'r';
x = !a;
y = a & b;
z = a|b;
输出结果:
x = true
y = false
z = true
四、移位运算符
移位运算符的面向对象也是二进制的“位”。可以单独用移位运算符来处理int型数据。它主要包括:左移位运算符(<<)、“有符号”右移位运算符(>>)、“无符号”右移运算符(>>>)
1)左移位运算符
左移位运算符,用符号“<<”表示。它是将运算符左边的对象向左移运动运算符右边指定的位数(在低位补0)。
2)“有符号”右移运算符
“有符号”右移运算符,用符号“>>”表示。它是将运算符左边的运算对象向右移动运算符右侧指定的位数。它使用了“符号扩展”机制,也就是说,如果值为正,在高位补0,若为负,则在高位补1。
3)“无符号”右移运算符
“无符号”右移运算符,用符号“>>>”表示。它同“有符号”右移运算符的移动规则是一样的,惟一的区别就是:“无符号”右移运算符,它采用了“零扩展”,也就是说,无论值为正负,都在高位补0。
/*移位运算符测试*/
int a = 15;
int b = 2;
int x = a << b;
int y = a >> b;
int z = a >>> b;
输出结果:
15 << 2 =60
15 >> 2 = 3
15 >>> 2 =3
五、赋值运算符
赋值运算符是程序中最常用的运算符了,只要有变量的声明,就要有赋值运算。如a = 3;这里的a我们都知道是变量名,根据前面对变量的定义,我们可以知道这里的a实际上就是内存空间的一个名字,它对应的是一段内存空间,一在要在这个空间放入3这个值。这个放入的过程就实现了赋值的过程。
赋值运算一览表
运算符 |
一般表示法 |
Java语言表示法 |
+= |
a = a + b |
a += b |
-= |
a = a - b |
a -= b |
*= |
a = a * b |
a *=b |
/= |
a=a / b |
a /= b |
%= |
a = a % b |
a %= b |
>>= |
a = a >> b |
a >>= b |
>>>= |
a = a >>> b |
a >>>= b |
六、条件运算符
expression1?expression2 :expression3
expression1 是一个boolean条件,其值:true或false
true:执行 expression2
false:执行 expression3
最后总结一下运算符的优先级
运算符 |
优先级 |
括号() |
1最高 |
++、-- |
2 |
~、! |
3 |
*、/、% |
4 |
+、-(减) |
5 |
<<、>>、>>> |
6 |
>、<、>=、<= |
7 |
==、!= |
8 |
& |
9 |
^ |
10 |
| |
11 |
&& |
12 |
|| |
13 |
? : |
14 |
java控制流语句
1.判断语句:
a. if-else语句,语法如下:
if(condition)
{
action1;
}
else
{
action2;
}
注释:conditon是一个包含比较运算符的布尔表达式,其返回值为true或false。
b. switch,switch-case语句,语法如下:
1)switch语句
switch(condition)
{
case ABC:
statements;
case DEF:
statements;
break;
}
2)switch-case语句
switch(expression)
{
case value1:
action1 statements;
break;
case value2:
action2 statements;
break;
。。。
case valueN:
actionN statements;
break;
default:
default statements;
}
注意:
1) expression是一个变量,包含将要计算的值。它必须属于byte,short,int或char型。
2)value1,。。。valueN,是可能与expression变量中的值相匹配的常量值。
3)action1,。。。 actionN,是在相应的case语句的值为真时要执行的语句。
4)default是一个可选的关键字。在所有的case语句的值为假时指定要执行的语句。
5)break是一个关键字,用于表达式的值为真时,结束switch-case语句。