黑马程序员————学习日记【2】 【Java编程基础1】

来源:互联网 发布:2017网络项目 编辑:程序博客网 时间:2024/04/30 10:09

------- android培训java培训、期待与您交流! ----------

 

一、Java语言基础组成

【关键字、标示符、注释、常量和变量、运算符、语句、函数和数组】

 

1、关键字

2、标识符

定义:在程序中自定义的一些名称,由26个英文字母大小写、0-9的数字和_$符号组成。

规则:(1)数字不可以开头   2)不可以使用关键字   3)要严格区分大小写   4)为提高阅读性,尽量起有意义的名字

Java中的名称规范:

1)包名:多单词组成时所有字母都小写   xxxyyyzzz

2)类名接口名:多单词组成时,所有单词的首字母大写    XxxYyyZzz

3)变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。   xxxYyyZzz

4)常量名:所有字母都大写,多单词时每个单词用下划线连接。   XXX_YYY_ZZZ

3、注释

定义:用于注解说明解释程序的文字就是注释

作用:提高了代码的阅读性

格式:(1)单行注释 //注释文字   2)多行注释  /*注释文字*/     3)文档注释   /**注释文字*/

备注:

1)单行和多行注释的文字不会被JVM解释运行

2)文档注释的内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。

3)代码仅仅是思想的一种体现形式

范例如下:

 

 /**这是我的Hello World程序@author 小明*/class Demo{     /*    这是主函数,是程序的入口,它的出现可以保证程序的独立运行     */    public static void main(String[] args)    {       //这是输出语句,用于将括号内的数据打印到控制台       System.out.println(“Hello World”);    }}


 

4、常量

定义:常量表示不能改变的数值

分类:

(1)       整数常量:所有整数

(2)       小数常量:所有小数

(3)       布尔型常量:true   false

(4)       字符常量:将一个数字字母或者符号用单引号(‘’)标识  ,单引号里只能放一个字符‘4’‘+’‘a’。  ab’错误

(5)       字符串常量:将一个或者多个字符用双引号标识如“ab”“”

(6)       null常量:只有一个数值就是null

5、进制

八进制是二进制的三位表示一位演变过来的。

进制越大表现形式越短。

十进制——>二进制      原理:对十进制进行除2运算

二进制——>十进制       原理:二进制乘以2的过程

负数的二进制表现形式: 原理:就是其正数的二进制取反加1  (取反:就是将二进制的1变成00变成1

备注:负数的二进制位的最高位是1,正数的二进制位的最高位是0

6、变量

(1)定义:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。

(2)作用:用来不断的存放同一类型的常量,并可以重复使用

(3)注意事项:<1>变量的作用范围,在{}之间有效        <3>初始化值

(4)格式:数据类型   变量名  = 初始化值

          备注:格式是固定的,记住格式,以不变应万变。

            

(5)什么时候定义变量?当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。

         自动类型提升和强制转换

7、运算符【算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和三元运算符】

1 a++   相当于   a = a+1;

            b = a++ 运算过程   先把a的值赋给b,然后a再自增+1

            b = ++a 运算过程    a+1,然后赋值给b

2)字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

        System.out.println(“hahfhah”+”hahfahha”);

        System.out.println(“5+5=”+5+5);   结果:“5+5=55

        System.out.println(a+”,”+b);  代表分别打印ab的值

        System.out.println("a="+a+",b="+b); 更清晰

        

3)转义字符:通过\来转变后面字母或者符号的含义 

  <1> \n换行

  <2> \t制表符,相当于Tab

  <3> \b退格,相当于Backspace

  <4> \r按下回车键    window系统中,回车符是由\r\n两个字符来表示

备注:【转义字符要写在被转义的前面】             

System.out.println("\"hello\""); 结果"hello"                                        System.out.println("\\hello\\"); 结果\hello\      char = '\n';可以  

char里面能不能放中文?   char = ‘’;    答:可以。一个中文是两个字节,char类型也是两个字节

8

(1)       x+=4  相当于 x = x+4;

(2)      面试 已知 short s =  4;    为什么 s = s + 5;不可以    s+=5;就可以

                答:s = s + 5;是两次运算,先做右边的加法,再赋值给左面。  s+=5就是做一次赋值运算,

                        实现把左右两面的和赋给左面。

                        两者的最大不同是s+=5会做一个自动转换动作,而s = s + 5不会做。

                       简单说就是:s = s + 5编译失败,s+=5编译通过。

                      补充:s+5运算完是int值,再赋给s装不下,容易丢失精度。 s+=5只做赋值运费,它内部有一个自动转换动作。

3)特殊赋值   int a,b,c    a = b = c = 5;

 

9

10

1&:只要两边的boolean表达式结果,有一个为false,结果就是false.

          只有两边都为true,结果才为true

2|:两边只要有一个为true,结果为true

             只有两边都为false,结果为false

3^: 两边相同,结果是false.

       两边不同,结果是true.

4&&&的区别:&无论左边是true还是false,右边都运算;&&当左边为false时,右边不运算。

5|||的区别:|两边都参与运算,||当左边为true,右边不运算。

11

1<<:就是乘以2的移动的次数次幂

     >>:就是除以2的移动的次数次幂

2>>:最高位补什么,由原有数据的最高位值而定。如最高位是0,右移后,用0补空位。如最高位是1,右移后,用1补空位。

     >>>:无论最高位是什么,右移后,都用0补。

3)一个数异或同一个数两次,结果还是那个数。   7 ^ 4 ^ 4 = 7

4)问:最有效率的方式算出2乘以8等于几? 答:2<<3   

4)问:对两个整数变量的值进行互换(不需要第三方变量)

        答:<1>通过第三方变量 (常用)       <2> (不推荐)                                                                                     <3>(技巧性)

                     int temp;                                      n = n+m;//如果nm的值非常大,容易超出int范围,损失精度。     n = n ^ m;

                     temp = n;                                    m = n-m;                                                                                                   m= n ^ m; //(n ^ m) ^m

                     n = m;                                         n = n-m;                                                                                                    n = n ^ m;// n ^ (n ^ m)

                     m = temp;

 5System.out.println(Integer.toBinaryString(60));     60的二进制

6

class OperatorDemo{public static void main(String[] args){int num = 60;//获取60的最低4位,通过 & 15;int n1 = num & 15;System.out.println((char)(n1-10+'A'));//要获取下一组4位,将60右移4位。int temp = 60 >>> 4;//对temp的值进行最低4位的获取int n2 = temp & 15;System.out.println(n2); /*             0-9  'A'  'B'  'C'  'D'  'E'  'F'                      65   66    67                     10   11    12   13   14   15              12 - 10 = 2 + 'A' = (char)67;             */  }}


结果是:3C

12

13

1)判断结构

备注:<1>如果if控制的语句只有一条,可以不加{};如果有多条,而不加{}那么它就控制最近的一条。

            <2>if else结构简写形式:变量 =(条件表达式)?表达式1:表达式2

               好处:可以简化if else代码

               弊端:因为是一个运算符,所以运算完必须要有一个结果。

 

练习:

<1>

int n =3;if(n>1)System.out.println("a");else if(n>2)System.out.println("b");else if(n>3)System.out.println("c");elseSystem.out.println("d");

结果是:a

 

if(n>1)System.out.println("a");if(n>2)System.out.println("b");if(n>3)System.out.println("c");elseSystem.out.println("d");System.out.println("over");


结果是:a  b   d  over

 

<2>

class IfTest{public static void main(String[] args){//需求1:根据用户定义的数值不同,打印对应的星期英文int num = 2;if(num==1)System.out.println("monday");else if(num==2)System.out.println("tsd");elseSystem.out.println("nono");//需求2:根据用户指定的月份,打印该月份所属的季节//3,4,5春季6,7,8夏季9,,10,11秋季12,1,2冬季int x =4;if(x==3 || x==4 || x==5)System.out.println(x+"春季");else if(x==6 || x==7 || x==8)System.out.println(x+"夏季");else if(x==9 || x==10 || x==11)System.out.println(x+"秋季");else if(x==12 || x==1 || x==2)System.out.println(x+"冬季");elseSystem.out.println(x+"月份不存在"); if(x>12 || x<1)System.out.println(x+"月份不存在");else if(x>=3 && x<=5)System.out.println(x+"春季");else if(x>=6 && x<=8)System.out.println(x+"夏季");else if(x>=9 && x<=11)System.out.println(x+"秋季");elseSystem.out.println(x+"冬季");}}

 

 

(2)选择结构

 

 练习:

 

//需求:根据用户指定的月份,打印该月份所属的季节//3,4,5春季6,7,8夏季9,,10,11秋季12,1,2冬季class SwitchDemo{public static void main(String[] args){int x =1;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(x+"月份不存在");}}}


 

备注: 

if switch 区别:

if 能判断区间,switch不方便; if能判断布尔型,switch不行;

 

如果判断的具体数值不多,且能符合 byte   short   int   char这四种类型,建议用switch。(JDK1.7switch也可判断字符串)

其他情况:对区间判断,对结果为boolean类型判断,使用ifif的使用范围更广。 

原创粉丝点击