黑马程序员——Java的基本操作

来源:互联网 发布:淘宝和京东的采购模式 编辑:程序博客网 时间:2024/05/19 12:11


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



 


Java语言基本组成:关键字、标识符、注释、变量和常量、运算符、语句、函数、数组。 


基本数据类型对象包装类:

 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义属性和行为丰富了该数据的操作,用于描述该对象的类就称为基本数据类型对象包装类。该包装对象用于基本类型和字符串之间的转换。 


基本类型——>字符串

 1、基本类型数值加+“”

     例:521+“”

 2、用String类中的静态方法valueOf(基本数据类型);


字符串——>基本类型

1、使用包装类中的静态方法 xxx parseXxx("xxx类型的字符串");

 例:int parseInt("abc");


Jdk1.5版本出现的新特性,自动装箱,简化书写,多了一个Null


例: int i=4; Integer i=4;不用写成Integer i=new Integer();


Jdk1.5版本以后,如果装箱的是一个字节,那么该数据会被共享不会重新开辟空间。 


Java中的注释

注释是一个程序员必须要具有的良好编程习惯。

初学者编写程序可以养成习惯:先写注释在写代码。

将自己的思想通过注释先整理出来,在用代码去体现。

因为代码仅仅是思想的一种体现形式而已。 


注释作用:

1注解说明程序

 2调试程序

单行注释://

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。


多行注释:/* …… */

多行注释中可以嵌套单行注释,多行注释中不能嵌套多行注释


文档注释:也是程序说明书,是给开发者用的 /** ….. */

对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。


软件有两个说明书:程序说明书,使用说明书


标识符

在程序中自定义的一些名称。

26个英文字母大小写,数字:0-9,符号:_$组成。

定义合法规则:

         1、数字不能开头。

         2、不可以使用关键字。

         Java中严格区分大小写。

注意:起名字时,为了提高阅读性,要尽量起的有意义。


Java中的包名规范:

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

             xxxyyyzzz

类名接口名:多单词组成时,所有首字母要大写。

             XxxYxxZxx

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

             xxxYyyZzz

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

             XXX_YYY_ZZZ 


常量与变量


常量表示不能改变的值。

Java中常量的分类:

             1、整数常量,所有整数。

      2、小数常量,所有小数。

      3、布尔型常量,较为特有,只有两个数值,true false

      4、字符常量,将一个数字字母或者符号用单引号(‘’)标识。

      5、字符串常量,将一个或者多个字符用双引号标识。

      6null常量,只有一个数值就是Null


对于整数Java有三种表现形式:

      十进制:0-9,满101

      八进制:0-7,满81,用0开头表示。

      十六进制:0-9A-F,满161,用0x开头表示。


进制之间的转换


二进制转十进制:

原理:二进制乘以2的过程。

例:110的十进制

    1 1 0 = 6

    0*2(0)+1*2(1)+2*2(2)

        0 +   2+   4 = 6 


      110的十进制是6 


十进制转二进制:

原理:对十进制数进行除二运算,从右往左。


例: 6的二进制 


      

6的二进制是110

6转换成二进制的方法:Interger.toBainaryString(6); 


其他进制的转换:

转换十六进制,四个二进制位就是一个十六进制位。

例:90转成十六进制 

  


90的十六进制是0x5A 

转八进制,三个二进制代表一个八进制。 


例:90转成八进制


90的八进制是132 


负数的二进制表示:正数的二进制取反

取反:将二进制的1变成00变成1.

负数的最高位都是1,正数的最高位是0 


变量:就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。

如何开辟空间?就是通过明确数据类型,变量名称数据来完成。   

定义变量的格式:数据类型变量名=初始化值; 

变量在内存中的表现形式


例:int x;



什么时候定义变量:

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


类型转换

有两种方法:

      1、自动类型转换(也叫隐式类型转换)

      2、强制类型转换(也叫显式类型转换) 


表达式的数据类型自动提升:

      1、所有byte型、short型和char的值将被提升到int型。

      2、如果一个操作数是Long型,计算结果就是Long型。

      3、如果一个操作数是float型,计算结果就是float型。

      4、如果一个操作数是double型,计算结果就是double型。


例:自动转换


 


强制转换

b = (byte)(b+2); 

 


运算符

运算符有:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符。 


取模运算:

左边如果小于右边,结果是左边;左边等于右边,结果是0;右边是1,结果是0。如果有负数,看左边,左边是负,就是负,和右边无关。 


例:

a=3;

b=a++; //先赋值在进行加1动作

b=++a; //行进行加1动作,在赋值


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


例:


  这两个有什么区别?


有什么区别:

S+=5;第一个是一次运算,有自动转换动作

S=s+5;没有自动转换动作,会提示错误,损失精度,运算后是int值,赋给short类型装不下,会编译出错。容易丢失精度。 


逻辑运算符

逻辑运算符用于连接boolean布尔类型的表达式。

&特点:只要两边的boolean表达式结果,有一个为false,那么结果为false

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

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

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

^异或:就是和|有一点不一样,当true^true=false;

^特点:两边相同为false,两边不同为true


&&&的特点:

&:无论左边是true还是false,右边都运算。

&&:当左边为false时,右边不运算。

|:两边都运算。

||:左边为true时,右边不运算。


例:7^4 = 7

  


一个数异或同一个数两次,结果还是那个数,多用于加密。  


位运算 

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

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

>>>无符号右移:无论最高位是0还是1,最高位都补0

>>右移:最高位补什么,由原有的最高位决定。

如果最高位是0,用0补空位;

如果最高位是1,用1补空位。 


例: 6右移2位和1




 


反码:其实就是取反,取反加1 


例:6的反码:=7

      



关键字


关键字的定义和特点:

定义:被java语言赋予了特殊含义的单词。

特点:关键字中所有字母都小写。 


例:


      用于定义数据类型的关键字

      class    interface      byte      int  等。

用于定义数据类型值的关键字

true        false   null 

用于定义流程控制的关键字

If    else  switch   case   do  等。

 


语句

 

程序流程控制

1、判断语句

2、选择语句

3、循环语句


IF语句 


三种格式:

1if(条件表达式)

      {

             执行语句;

}

2if(条件表达式)

      {

             执行语句;

}

else

{

             执行语句;

}

3if(条件表达式)

      {

             执行语句;

}

else if(条件表达式)

{

             执行语句;

}

…….

else

{

             执行语句;

}

 


例:


      根据用户定义的数值不同,打印对应的星期英文。

      int num =0;

      if(num ==1)

      {

             System.out.println(“星期一”);

}

else if(num == 2)

{

            System.out.println(“星期二”);

}


 


Swithch语句


格式:

      switch(表达式)

{

      case取值1:

             执行语句;

             break;

case取值2:

             执行语句;

             break;

……….

default:

执行语句;

             break;

}


特点:


1switch语句选择的类型只有四种:byte int short char;

2case之间和default没有顺序,先执行第一个case,没有匹配的case执行default

3、结束switch语句的两种情况:遇到break,执行到switch语句结束。

4、如果匹配的casedefault没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

 


例:

根据指定月份,打印该月份所属的季节。


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("输入月份错误!");

             }

 


IFSwitch很像,具体什么场景下应用什么语句?

如果判断的具体数值不多,而是符合Byte Short int char四种类型,虽然两个语句都可以使用,建议使用Switch语句,因为效率高。

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

 


循环结构

代表语句:while  do while for


while格式:

while(条件表达式)

{

      执行语句;

}

do while格式:

do

{

      执行语句;

}

while(条件表达式); 


While的特点:先判断条件,只有条件满足在执行循环体。

Do while的特点:先执行循环体,在判断条件。

简单一句话:do while无论条件是否满足,循环体至少执行一次。


例:

      while(x<10)

{

            sum =  sum+x;

x++;      

}


for循环格式:

for(初始化表达式;循环条件表达式;循环后的操作表达式)

{

      执行语句;

} 


1、变量有自己的作用域,对于for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效。For语句执行完毕,该变量在内存中被释放。

2Forwhile可以进行互换,如果需要定义循环增量,用for更为合适。


 总结:

什么时候使用循环结构?

当要对某些语句执行很多次时,就使用循环结构。 


例:

for(int x=1;x<arr.length;x++)

             {

                    if(arr[x]>arr[max])

                    {

                           max=x; 

                    }

             } 


循环注意:

一定要明确哪些语句是需要参与循环,哪些不需要。 


其他控制语句

break:跳出,应用范围:选择语句和循环结构

continue:继续,应用于循环结构。


特点:


Continue:只能作用于循环结构,继续循环。

特点:结束本次循环,继续下一次循环。


1breakcontinue语句作用的范围

2break continue单独出现时,下面可以有任何语句,因为都执行不到。


函数

什么是函数:函数就是定义在类中具有特定功能的一段独立的小程序。函数也称为方法。

函数的格式:

修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2…


      执行语句;

      return返回值;


返回值类型:函数运行后的结果的数据类型。

参数类型:是形式参数的数据类型。

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

实际参数:传递给形式参数的具体数值。

return:用于结束函数。

返回值:该值会返回给调用者。 


函数的特点:

1、定义函数可以将功能代码进行封装。

2、便于对该功能进行复用。

3、函数只有被调用才能执行。

4、函数的出现提高了代码的复用性。

5、对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一句省略不写。

注意:函数只能调用函数,不可以在函数内部定义函数。

        定义函数时,函数的结果应该返回给调用者,交由调用者处理。 


函数的重载:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。重载只和参数列表有关系。

什么时候用重载?

当定义的功能相同,但参与的运算的未知内容不同,那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名的函数。


例:

 


数组


数组的定义:同一种数据类型的集合,其实数组就是一个容器。

数组的好处:可以自动给数组的元素从0开始编号,方便操作这些元素。

格式:元素类型[]数组名= new元素类型[元素个数或数组长度];


例:int[]arr = new arr[12]; 


数组的操作:


获取数组中的元素,通常会用到遍历。

数组中有一个属性可以直接获取到数组中元素的个数,length

使用方式:数组名称.length=



 


 


 


 




0 0