黑马程序员_java语言基础

来源:互联网 发布:软件测试零基础 编辑:程序博客网 时间:2024/06/05 20:57

黑马程序员_java语言基础

 

                                                               ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

<span style="background-color: rgb(255, 255, 255);"> </span>

java语言基础组成部分

一,标示符

        像类的名称,变量的名称 。注意名称一定要有意义,要方便阅读。而且必须遵循以下规则:

           1、英文,数字,_$组成

           2、数字不可以开头

           3、不可以试用关键字

注意 :再次强调,java严格区分大小写,所以有些关键字开头大写,如果不是这样的话,会只是一个名称,或者程序报错。

            一般规范命名要注意的,包名一般都是小写;类名首字母大写,多个单词组成,每个每个的开头都大写;变量名称,多个字母出去第一个每个单词首字母大写;常量就都大写。平常自己编写程序的时候要注意到这个规范,要成良好习惯。

 

二,java中的常量与变量

       整数型(byte  short  int  long)byte即是字节,由八个二进制位表示而成,其他依次是16个、32个、64个。long定义时要在数字后面加l    如:long  k= 4567l;

       浮点型(float   double)  float 定义是要在数字后面加f,如:float   k=2.3f;

       布尔型(boolean) true 、false注意只有这两个常量,就是真和假,有次可看出是用来判断的

       字符型(char )  使用时必须用单引号  'a'  , '4'    (0~~~6535)内存中占两个八位。

       字符串常量          使用时必须用双引号"acd"

  以上为基本数据类型

         类(class)    接口(interface)    数组([])

这三位为引用数据类型

 

(    注意程序里java本身一般整数型的常量为int型,小树默认为double型,所以编程时当数据定义的时候要注意,不要溢出。)

             例如:byte b=3;b = b+2; 此时b为byte型,而2为int型,所以当两个相加的时候,+号前的b会被系统升级为int型,相加后就不能赋值给byte  b 了。如果想赋值,就得用强制类型转换。方式为:(需要转换的类型)变量。  看下面的比较:

                        System.out.println('a');                  打印字符  a
                        System.out.println('a'+1);              此时打印出结果为98 ,因为char为两八位,1为四八位,系统自动提升char类型,所以输出为整数类型。
                        System.out.println((char)('a'+1));   强制转换方式,把结果以char类型输出。

注意需要记忆的东西:1)字符a在ASDII里面对应数字为97,A为65。

             

 

 以上为基本数据类型

         类(class)    接口(interface)    数组([])

这三位为引用数据类型

 

         定义变量的使用格式为:数据类型   变量名   =    初始化值。例如 int  x=4;   注意分号结束。改变x里面的值是这样的  直接  x=4;  如果再写 int  x=4,就意味又定义一个变量名,和第一个定义的变量就冲突了。

 

三,进制和转换

       计算机语言中常用到的进制有

        八进制:0-7,满8进1。用0开头表示。就是把二进制位每三位表示为一个。

        十六进制:0-9,A-F,满16进1,用0x开头。就是把二进制位每三位表示为一个。

        不同进制其实是同一个数的不同表现形式。

    1、1)二进制和十进制之间的转换,原理就是对十进制数进行除二运算

                 例如:把6换成2进制     6/2=3  余数为0

                                                       3/2=1  余数为1

                                                                         而1不能被二整出

                            此时把0和1和1倒着写    为110    此时就是十进制6转换为二进制110

         2)二进制转换为十进制  原理就是二进制乘以2的过程

               例如:110       从零开始 第一位乘以2的0次方,第二位1乘以2的1次方,第三位为1乘以2的2            次方,依次类推。

          3)二进制之间相加

                        101

                      +001              此处也是满2进1。

                     ----------

                        110

            其他进制转换也是类同的。十进制转换十六进制和八进制,先转换为二进制,然后转换为十六进制和八进制,即每四位为一位或者每三位为一位,这样计算比较方便。

            负数的二进制表现形式。如6,二进制位110;-6 的二进制,其实就是6的二进制取反+1。一般正数的最高位为0,负数的最高位为1。

 

四,运算

    %  取余   需要注意的是 1%5 ,  结果为左边,就是说左边比右边小,取左边。-1%5  结果是-1  ,就是说正负号取决于左边。

     区别a++和++a。 b=a++   就是先把a的值赋予b,在自增。b=++a   就是先给自己自增,然后赋值与b。

     字符串和任何数据使用+都是相连接,最终都会变成字符串。例子如下:

    System.out.println("a="+a+","+"b="+b);结果为a=3,b=4
     System.out.println("5+5="+5+5);结果为5+5=55

      转义字符应用:\n:换行。\b:退格,相当于backspace。 \r:按下回车键。 \t:制表符,相当于tab键。转义字符就是通过\  来改变后面字符或者符号的含义。例如:

      System.out.println("\"hello world\"");结果为带双引号的“hello world”    ,此处通过\转变后面双引号的意义。

        赋值运算里要注意 +=   -=   *=   /=   %=   的意义 。如+=就是把左右两天加起来的和付给左边,其他的类同。如:short s=4;
              s=s+5;   (不正确)             这一部丢失精度,不正确,此处变量不会自动更改类型,赋值不了左边
              s+=5;     (正确)            而+=会自动升级变量类型  正确

 

注意,比较运算里,不要把==写成=

       逻辑运算

逻辑运算就是连接boolean类型的表达式。

逻辑运算符里注意  异或  ^       记住,相同为假,不同为真。

&&和&的区别:用处上没有区别。&:无论左边是true是false,右边都运算。&&:当左边为false时,右边不运算。

||和|的区别   :用处上没有区别。|:无论左边是true是false,右边都运算。||:当左边为true时,右边不运算。

        位运算

位运算,<<   左移,实质就是原来的数乘以2的n次方,移动几位n就等于几

位运算,>>   右移,实质就是原来的数除以2的n次方,移动几位n就等于几。注意右移的时候,高位时0,则补0,如果最高位是1则补1。

位运算,>>> 无符号右移,不管左端最高位是1或0,都补0。

位运算相对于乘除来说,运算效率比较高。

&、 |、! 三个也是位运算,只是有以前的boolean型运算变为二进制型的0和1,此时是1视为真,0视为假,逻辑方面和以前逻辑运算一样。例如:6&3=

                                                               110

                                                            & 011

                                                          ------------

                                                               010    =    2    则  6 & 3 = 2

反码  ~    就是取反。小知识,一个数异或同一个数两次结果还是原数,可以用于数据加密。(6^3^3=60)

 

程序里二进制转换为十六进制

 

原理图:

               0000-0000 0000-0000 0000-1100 1110-0110

         &    0000-0000 0000-0000 0000-0000 0000-1111

-------------------------------------------------------------------------------

               0000-0000 0000-0000 0000-0000 0000-0110

就是用最后四位为1的与原数  进行  与   运算   ,这就取到了第一组四位。

                        0000-0000 0000-0000 0000-1100 1110-0110

         &    0000-0000 0000-0000 0000-0000 0000-1111

-------------------------------------------------------------------------------

               0000-0000 0000-0000 0000-0000 0000-1110

取第二组四位的时候,可以把原数进行右移4位即可,然后在和下面的数进行与运算,依次类推即可

  然后把相对应的数转换为十六进制即可。

  具体程序:class OperateDemo3
{
 public static void main(String[] args)
 {
  int num = 60;
  int n1 = num & 15;
  System.out.println((char)(n1-10+'A'));
  int temp = 60>>4;
  int n2 = temp & 15;
  if(n2>9)
  System.out.println((char)(n2-10+'A'));
  else
  System.out.println(n2);
 }
}

其中  ni 为与运算过后的值,结果为12,在十六进制里面是C。怎么变化,可以通过-10+'A',然后强制转化char类型即可。

三元运算符    (条件表达式)?表达式1:表达式2。条件表达式为true时,执行表达式1;条件表达式为false时,执行表达式2。

则上述程序输出语句可改为((n1>9)?(char)(n1-10+'A'):ni),用于判断n1是否大于9,n2同样。

 

                                                                                           

 

 

 

                                                                                             流程控制部分

一,if语句    判断结构

 

       格式  1、if(条件表达式)     2、if(条件表达式)        3、if(条件表达式)

               {                                          {                                             {

                       执行语句;                          执行语句;                          执行语句;

                 }                                          }                                             }     

                                                            else(条件表达式)           else if(条件表达式)

                                                          {                                               {

                                                                 执行语句;                             执行语句;

                                                            }                                              }

                                                                                                          ........

                                                                                                          else(条件表达式)

                                                                                                          {

                                                                                                                   执行语句;

                                                                                                           }    

if语句如果其他控制语句只有一条的话,可不加大括号,为防止运行错误,最好加上大括号。

if语句在简单形式上来说,和三元运算符有相同之处,和不同之处:

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

三元运算符:1)可以简化if  else 代码  2)因为是一个运算符,所以运算完必须得有结果。

例如: b  =  x>1?System.out.println("YES"):100   这样就不行,因为如果表达式为true ,则执行那个输出语句,二输出语句并没有实际的运算结果,只是把YES打印到屏幕上,没有运算结果,所以不同。

简单if else  语句:

class IfDemo
{
 public static void main(String[] args)
 {
  int x = 3;
  if(x>1)
  {
   System.out.println("YES");
  }
  else
  {
   System.out.println("ok");
  }
  System.out.println("NO");
 }
}

当要多次判断是 用第三种if语句表达形式。

二,switch  选择结构  格式为:

switch(表达式)                            注意此表达式 ,不是条件表达式

{

   case 取值1:                                 case 的取值  就是表达式的取值

    执行语句;

    break;                                         break 执行后就会调出switch语句

    case 取值2:

     执行语句;

     break;

   .........

   default:                                          default为缺省表达,即上述所有值不成立后,执行default下的语句。

    执行语句;

    break;

}

           其中default中的break可以省略,因为执行到最后语句完成后就会跳出switch语句

           每个case中的break,回事当前case满足的情况下跳出switch语句

           switch(表达式),此处的表达式值接收4中类型的值,byte,short,int ,char  

switch语句中,每个语句case  没有顺序之分,只有case中没有才会执行default,所以default可以放到语句中任何地方。

break的作用,先看一个例子:

class  SwitchDemo
{
 public static void main(String[] args)
 {
  int x =2;
  switch(x)
  {
             default:
                   System.out.println("d");
             case 4:
                   System.out.println("a");
             case 6:
                  System.out.println("b");

                  break;
             case 5:
                  System.out.println("c");
                  break;

  }    

语句结果是          d  a  b

就是说如果case或者default满足结果,没有break,那么就会执行当前语句以及以下可以执行的语句,不再判断case,知道语句switch语句结尾或者碰到break语句。   

 

if和switch区别

 

1)相同点:都可进行判断

2)不同点:1.if进行区间和具体数值的判断,程序简单     switch语句进行区间判断程序冗长   

                    2.if判断boolean类型的值                                switch判断byte short int  char  型的值,不能判断boolean类型的值

                    3.if语句范围更广一些                                     switch语句范围窄一些

根据情况选择两种语句

     数值不多,而且符合byte short  int  char 四种类型用switch语句进行编写,此时效率比较高

     其他一般情况,对区间判断,对结果为boolean类型的判断,就用if语句,if范围更广

 

 

 

                                  ----------------------------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0