黑马程序员-Java基础知识-day02

来源:互联网 发布:怎样成为淘宝客赚佣金 编辑:程序博客网 时间:2024/05/01 11:08

---------------------- 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