---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------------------------------
Java语言基础组成:
关键字、标识符、注释、常量和变量、运算符、语句、函数、数组
1、关键字
1.被Java语言赋予了特殊含义的单词;
2.特点:关键字中所有字母都为小写;
3.goto 和const虽然从未使用,但也作为Java关键字保留
其中:
用于定义访问权限修饰符的关键字:private protected public
用于定义类,函数,变量修饰符的关键字:abstract final static synchronized
用于定义类与类之间关系的关键字:extends implements
用于定义建立实例及引用实例,判断实例的关键字:new this super instanceof
用于异常处理的关键字:try catch finally throw throws
用于包的关键字:package import
其他修饰符关键字:native stnctfp translent volatile assert
2、标示符
1.在程序中自定义的一些名称;
2.由26个英文字母大小写,数字:0-9符号:_$组成
3.定义合法标示符规则:
1).数字不可以开头;
2).不可以使用关键字
4.Java中严格区分大小写
注意:在起名字时,为了提高阅读性,要尽量有意义。
3、Java中的名称规范:
包名:多单词组成时所有字母都小写,例如xxxyyyzzz
类名接口名:多单词组成时,多有单词的首字母大写,例如:XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写,例如:xxxYyyZzz
常量名:所有字母都大写,多单词时每个单词用下划线连接,例如:XXX_YYY_ZZZ
4、常量和变量
1.变量与常量特点
常量:是在程序中的不会变化的数据。
变量:其实就是内存中的一个存储空间,用于存储常量数据。
作用:方便于运算。因为有些数据不确定。所以确定该数据的名词和存储空间。
特点:变量空间可以重复使用。
什么时候定义变量?只要是数据不确定的时候,就定义变量。
2.数据类型
(1)Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。
数据类型分两种,基本数据类型和引用数据类型,详情如下图所示:
数据类型
|--基本数据类型
|--数值型
|--整数类型
|--byte
|--short
|--int
|--long
|--浮点类型(float)
|--字符型(char)
|--布尔型(boolean)
|--引用数据类型
|--类(class)
|--接口(interface)
|--数组([])
引用数据类型:类(class)、接口(interface)、数组([])
整数默认类型为:int,小数默认:double
(2)常用数据类型举例:
byte b = 2;//byte取值范围为-128~127
short s = 30000;
long l = 4l;//后面标识个“l”说明是long类型的数据
float f = 2.3f;//后面标识的”f”说明是float类型的数据
double d = 34.56;
char ch = ‘4’;
需要注意的是:char类型的数据时用单引号标识。
(3)数据参与运算
A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
**容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
***byte,short,char->int->long->float->double
***byte和 short不能和char之间互相转换,byte可以直接赋值给short,但是
他们三者在计算时首先会转换为int类型
**容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,
但可能造成精度降低或溢出;使用时要格外注意。
**有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,
然后再进行计算。
B:强制转换符
**格式:(数据类型)(要被转换的数据) byte b = (byte)(130);
C:字符型参与运算
**首先会去找对应字符的unicode码值。然后运算。
**char类型取值范围0~2(16)-1
D:字符串参与运算
**它是和参与运算的数据相连接组成了一个新的字符串。
小结:
1.byte、char和boolean均占1个字节,而一个字节分八位
2.short占2个字节,int占4字节,long占8字节
3.boolean的值只能是true或者是false
4.float单精度4个字节、double双精度8个字节
5.byte范围:-128-127,short范围:-32768-32767,char范围:0-65535
扩展:1MB = 1024KB = 1024*1024Byte
(4)类型转换
在ASCII码表中,常用的字母a代表计算机中的97,A代表65,字符’1’代表49,其余以此类推。
“+”:标识连接字符串
System.out.println(“a=”+a+”,b=”+b);
print:直接输出; println:输出并自动换行
字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
5.进制转换
Java自带二进制快捷表示方法:Integer.toBinaryString(6); -->110
1.十进制和二进制之间的转换:
十进制-->二进制
原理:对十进制数进行除2运算。例如6的二进制为110.
2.二进制-->十进制
原理:二进制乘以2次幂的过程。例如0*2的零次方+1*2的一次方+1*1的二次方=0+2+4=6
3.其他进制转换
1.转成十六进制
原理:四个二进制位就是一个十六进制位。
例如十进制90的二进制位01011010,转换成十六进制时可看成0101-1010即0X5A
2.转成八进制:
三个二进制位代表一位即001-011-010,缺数补零,转换成八进制则为132
负数的二进制表现形式
6-->110
-6-->其实就是6的二进制取反+1
取反:就是将二进制的1变成0,0变成1.
0000-00000000-0000 0000-0000 0000-0110
取反后为:
1111-11111111-1111 1111-1111 1111-1001
然后+1即为:
1111-11111111-1111 1111-1111 1111-1010 =-6
负数的最高位都是1.
6、运算符
Java中常用运算符:算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符
1.转义字符:通过\来转变后面字母或者符号的含义。
\n:换行
\b:退格,相当于backspace
\r:按下回车。Window系统中,回车符是由两个字符来表示\r\n
\t:制表符,相当于tab键
比较特殊的有:
\”:表示双引号
\\:表示斜线
|’:表示单引号
注:需要特别强调一点的是,在Windows中,回车符是有两个字符来表示:\r\n
2.赋值运算符
(1)符号:= += *= \= %=
(2)示例:
int x = 3;//把右边的值赋值给左边的int类型的x
x+=4;分解成两部:1,x=x+4; 2,将x为3的值与4相加后赋值给新的x,即x = 7;
其中,x+=4涉及到一个自动强制装箱拆箱的过程,即将小的数据类型强制提升为较大如int类型的数据返回给x;
3.比较运算符,返回值是一个布尔类型的数据,即结果要么是true,要么是false
(1)符号:==,!=,<,>,<=,>=,instanceof
==:等于 4==3 --> false
!=:不等于 4!=3 --> true
<:小于 4<3 --> false
>:大于 4>3 --> true
<=:小于等于 4<=3 --> false
>=:大于等于 4>=3 --> true
instanceof检查是否是类的对象”hello”instancoof String -->true,例如:猫 instanceof 动物 –》true
4.逻辑运算符
运算符 运算 范例 结果
& AND(与) false& true false
| OR(或) false|true true
^ XOR(异或) true^false true
! NOT(非) !true false
&& AND(短路) false&&true false
|| OR(短路) false||true true
&:只要两边的boolean表达式结果,有一个为false,那么结果就是false,只有两边都为true,结果为true。
|:两边只要有一个为true,结果为true,只有两边都有false,结果为false。
^:就是和|有点不一样,当true^true= false.
两边相同结果是false;
两边不同结果是true。
&和&&特点:
&:无论左边是true是false,右边都运算。
&&:当左边为false是,右边不运算,可以发现&&在运算时效率稍高于&。
|和||的特点:
|:两边都参与运算;
||:当左边为true时,右边不运算。
5.位运算符
运算符 运算 范例
<< 左移 3<<2= 12-->3*2*2=12
>> 右移 3>>1= 1-->3/2=1
>>> 无符号右移 3>>>1=1 -->3/2=1
& 与运算 6 &3 =2
| 或运算 6 | 3 =7
^ 异或运算 6 ^ 3 =5
~ 反码 ~6 =-7
<<:其实就是乘以2的移动的位数次幂;
>>:就是除以2的移动的位数次幂。
>>:最高位补什么由原有数据的最高位值而定。
如果最高位是0,右移后,用0补空位;
如果最高位是1,右移后,用1补空位。
>>>:无论最高位是什么,右移后,都用0补。
扩展:一个数异或同一个数两次,结果还是那个数,例如:7^4^4 = 7,此方法可以用来制作加密软件或数据。
6.三元运算符
(1)格式:(条件表达式) ? 表达式1:表达式2;
若条件为true,则运算结果为表达式1;若条件为false,则运算结果为表达式2.
(2)示例:
获取两个数中大数
int x = 3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数中的大数。
(3)三元运算符的利与弊
利:可以简化if else代码
弊:因为是一个运算符,所以运算完必须要有一个结果。
7.常用交换两个元素的值的方法
1,通过第三方变量
int n=3,m=8;
inttemp=n;
n = m;
m = temp;
2.不用第三方变量
n = n + m;
m = n - m;
n = n - m;
3.异或
n = n ^ m;
m = n ^ m;
n = n ^ m;
7、程序流程控制
程序流程控制语句有三种结构,分别是:判断结构、选择结构、循环结构
1.if语句
三种格式
(1)
if(条件表达式){
执行语句;
}
(2)
if(条件表达式){
执行语句;
}else{
执行语句;
}
(3)
if(条件表达式){
执行语句;
}else if(条件表达式){
执行语句;
}
...
else{
执行语句;
}
如果if语句中只有一个执行语句,可以省略大括号。
2.switch语句
格式:
switch(表达式)//switch语句中的表达式的值只能接收四种类型:byte,short,int,char
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default:
执行语句;
break;
}
switch语句特点:
a.switch语句选择的类型只有四种:byte,short,int,char,JKD1.7新特性中加入了String类型的数据
b.case之间与default没有顺序,先执行第一个case,没有匹配的的case执行default。
c.结束switch语句的两种情况:遇到break,执行到switch语句结束。
d.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,知道遇到break或者switch结尾结束。
注意:由于最后一个default中的break到了最后,因此可以省略break不写;
需求:根据用户指定的月份,打印该月份所属的季节。
class Switch{
public static void main(String[] args){
int x = 4;
switch(x){
case 3:
case 4:
case 5:
System.out.println(x+"月是春季");
break;
case 6:
case 7:
case 8:
System.out.println(x+"月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x+"月是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x+"月是冬季");
break;
default:
System.out.println("您输入的数字非法");
}
}
}
if和switch语句很像,具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而且符合byte short int char 这四种类型,
虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,因为if的使用范围更广。
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net