黑马程序员——Java编程基础

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

 

一、Java语言基础组成
    (一)关键字
        JAVA中具有某些特殊含义的单词。
     (二)标示符
        1、在程序中自定义的一些名称;
        2、由二十六个英文字母的大小写、数字(0-9)、_和$组成;
        3、定义合法标示符的规则:
           a.数字不能开头;
           b.不可以使用关键字;
           c.严格区分大小写。
         4、Java中的名称规范:
            a.包名:多单词组成时所有字母都小写(xxyyzz);
     b.类接口名:多单词组成时,所有单词首字母大写(XxxYyyZzz);
      c.变量名和函数名:多单词组成时,第一单词首字母小写,第二个单词开 始没个单词首字母大写(xxxYyyZzz);
            d.常量名:所有字母都大写,多单词时每个单词用下划线连接(XXX_YYY_ZZZ)。
    (三)注释
         单行注释、多行注释、多行注释
    (四)常量
         1、常量:表示不能改变的数值。
         2、Java中常量的分类:
          整数常量、小数常量、布尔常量、字符常量('a')、字符串常量、null常量。
         3、Java中证书三种表现形式:
           二进制(0、1)十进制(0-9),八进制(0-7),十六进制(0-F)。
         4、数制之间的转换:
            a.十进制——>二进制:除二取余法。
            b.二进制——>十进制:按权展开相加。
            c.二进制——>八进制:三位二进制变一位八进制。
            d.八进制——>二进制:一位八进制变三位二进制。
            e.二进制——>十六进制:四位二进制变一位十六进制。
            f.十六进制——>二进制:一位十六进制变四位二进制。
         5、负数二进制表现形式:
            负数的二进制就是其绝对值的二进制形式取反加一,负数的二进制最高位是1 。
    (五)变量
          1、概念:就是讲不确定的数据进行存储,也就是要在内存中开辟一个空间。
          2、变量名称:就是变量的名字。
          3、数据类型:
             a.基本数据类型:
  字节型byte(1字节)
  短整型short(2字节)
  整形int(4字节)
  长整形(8字节)
  单精度型float(4字节)
  双精度型double(8字节)
                字符类型char(2字节)
  布尔类型boolean(1 bit)
              b.引用数据类型:
                字符串(0-65535)、类、接口和数组。
           4、在程序中默认的是int和double。
      (六)运算符
           1、算术运算符
              +、-、*、/、%、++、--、连接符(+)
            例子:
            System.out.println("5+5="+5+5)//输出结果为5+5=55
           2、赋值运算符
             =、+=、-=、/=、%=
            事例:
             int a,b,c;a=b=c=3;
             int a=3;
             a+=5;//相当于a=a+5;
           3、比较运算符
              ==、!=、<、>、<=、>=、instanceof(检查是否是对象)
           4、逻辑运算符
              与(&)、或(|)、异或(^)、非(!)、双与(&&)、双或(||)
              逻辑运算符用于连接boolean类型的表达式。
              true&true=true;     true&false=false;
              false&true=false;   false&false=false;
              结论:只要两边有一个是false,结果就是false。两边都为true时结果才是true。
               true|true=true;  true|false=true;
               false|true=true;   false|false=false;
               结论:两边只有一个为true时,结果为true。两边都为false时,结果为false。
               true^true=false;  false^false=false;
               true^false=true;   false^true=true;
               结论:两边相通,结果是false,两边不同结果为true。
               !true=false;   !false=true;             
               &和&&的区别:&无论左边是true或者false,右边都运算。
                            &&当左边为false时,右边不运算。
               |和||的区别:|两边都运算,
                            ||当左边为true时,右边不运算。                   
           5、位运算符
              左移(<<)、右移(>>)、无符号右移(>>>)、与运算(&)、 或运算(|)、异或运算(^)、反码(~)
              结论:一个数异或同一个数两次,结果还是那个数,可用于加密。还可以用于交换两个变量的值。
              事例:用移位方法求一个数的十六进制。
                   public class OperateDemo
   {
    public static void main(String[] args)
     {
         int num=60;
      //获取60的最低四位,通过与15
                                            int n1=60&15;
     System.out.println((char)(n1-10+'A'));
                                     //获取下一组四位,通过将60右移四位,
    int temp=60>>>4;
     //对temp的值进行最低四位的获取
    int  n2=temp&15;
    System.out.println(n2);
     }
    }
           6、三元运算符
              a.格式:
                (条件表达式)?表达式1:表达式2;
               结论:如果条件为true,执行表达式1;否侧,执行表达式2
               事例:int x = 2,y;
                     y=(x>1)?100:200;//结果为100. 
      (七)程序流程控制
          1、判断结构
           a.if(条件表达式)
               {
                 执行语句;
  }
      b.if(条件表达式)
             {
                执行语句;
              }
               else
               {
  执行语句;
                }
             c.if(条件表达式)
                {
                   执行语句;
                 }
                else if(条件表达式)
                  {
                    执行语句;
                    }
                    ...
                  else
                    {
                     执行语句;
                     }
          2、选择结构
             switch(表达式)
              {
                 case 取值1:
     执行语句;
                   break;
   case 取值2:
                   执行语句;
                    break;
                    ......
                   default:
                    执行语句;
                    break;
               }
           switch语句的特点:
             a.switch语句选择的类型只有四种:byte,short,int,char。
             b.case与default之间没有顺序,先执行case,如果没匹配的case,再执行default。
             c.结束switch的两种情况:遇到break,或执行到switch语句结束。
             d.如果匹配的case或者default没有对应的break,那么程序会继续向下执 行,不在判断case运行可以执行的语句,直到遇到break或者switch的结尾结束。
             事例:根据指定的月份,打印该月份所属的季节。
              class  SwitchTest
                   {
                     public static void main(String[] args)
                        {
                          int x=4;
                          switch(x)
                          {
                              case3:
                              case4:
                              case5:
                                 System.out.println("春季");
                                 break;
                              case6:
                              case7:
                              case8:
                                 System.out.println("夏季");
                                 break;
                              case9:
                              case10:
                              case11:
                                 System.out.println("秋季");
                                  break;
                              case12:
                              case1:
                              case2:
                                 System.out.println("冬季");
                                 break;
                               default:
                                    System.out.println("wrong");
                             }       
                         }
                    }
          3、循环结构 
             a.while语句格式:
               while(条件表达式)
               {
                    执行语句;先判断条件,只有条件满足才执行。
                }
              事例:class  WhileDemo
                      {
                         public static voidmain(Sting[] args)
                            {
                              int x=1;
                              while(x<3)//循环判断条件
                                {
                                    System.out.println("x="+x);
                                     x++;
                                 }
                             }
                       }
              b.do while语句格式:
                do
                  {
                    执行语句;
                   }while(条件表达式)//do while的特点是无论条件是否满足,循环体至少执行一次。
                 事例:class DoWhileDemo
                         int x=1;
                        do
                         {
                            System.out.println("do:x="+x);
                             x++;  
                          }
                         while(x<3);//注意这儿的分号,这是跟while语句的区别
                c.for(初始化表达式;循环表达式;循环后的操作表达式)
                     {
                         执行语句;
                       }
                  事例:class ForDemo
                         {
                           public static void main(String[] args)
                              {
                                 for(int x=0;x<3;x++)
                                  {/*for循环语句的执行顺序:第一步,执行x=0;
                                    第二步,执行判断条件x<3;第三步,如果条件
                                    满足执行循环体,不满足则跳出循环。最后在满足的情况下,执行x++。*/
                                       System.out.println("x="+x);
                                     }
                                }
                          }
                     注意:for语句中的变量,它的作用域只在for语句之内。当for 循环结束时,变量也就释放了。

                  事例:打印九九乘法表
                      class ForForDemo
                       {
                            public static void main(String[] args)
                               {
                                  for(x=1;y<=9;x++)
                                      {
                                        for(y=1;y<=x;y++)
                                            {
                                               System.out.print(y+"*"+x"="y*x+"\t");
                                               }
                                            System.out.print();
                                        }
                                  }
                         }
            4、其他流程控制语句
               a.break(跳出):应用于选择结构和循环结构,使用break可以跳出循环体。
                b.continue(继续):应用于循环结构,continue语句是结束本次循环,继续下次循环。
                 d.标号的出现,可以让这两个语句作用于指定的范围。
                 e.break和continue单独存在时,下面不可以有任何语句,因为都执行不到。
             事例:
                    class  OtherDemo
                     {
                            w:  for(int x=0;x<3;x++)
                                 {
                                     for(int y=0;y<4;y++)
                                       {
                                           System.out.println("x="+x);//x=0
                                            break w;
                                        }
                                  }
                                  
           }
                       class  OtherDemo1
                     {
                            w:  for(int x=0;x<3;x++)
                                 {
                                     for(int y=0;y<4;y++)
                                       {
                                           System.out.println("x="+x);//x=0
                                            continue w;
                                        }
                                  }
                                  
           }
二、函数
     (一)函数的定义:
          函数就是定义在类中的具有特定功能的一段独立小程序,也叫方法。
     (二)函数的重载(overload)
           1、重载的概念:
              在同一个类中,允许存在一个以上的同名函数,只要它的参数个数或者参数类 型不同即可。
           2、重载的特点:
               与返回值的类型无关,只看参数列表。方便阅读,优化了程序设计。
三、数组
     (一)数组的定义:
          1、同一种类型数据的集合,其实数组就是一个容器。可以自动给数组中的元素从0开始编号,方便操作这些元素。
          2、数组的格式:
             a.格式一
              元素类型[] 数组名= new 元素类型[元素个数或数组长度];
             b.格式二
                元素类型[] 数组名= new 元素类型[元素,元素,...];
       ( 二)数组的用法
           1、数据的长度属性:数组名.length;
           2、遍历输出数组中的元素
             事例:  class  ArrayTest
                        {
                           public static void main(String[] args)
                             {
                                   int[] arr={1,8,5,6,2,0,4};
                                  arrayPrint(arr);
                              }
                            public static void arrayPrint(int[] arr)
                              {
                                    for(int x=0;x<arr.length;x++)
                                         {
                                            System.out.print(arr[x]);
                                          }
                               }

                         }
           3、数组的排序
             事例:class ArrayTest2
                       {
                          public static void  selectSort(int[] arr)
                          {
                              for(x=0;x<arr.length-1;x++)
                                 {
                                     for(y=x+1;y<arr.length;y++)
                                           {
                                               if(arr[x]>arr[y])
                                                   {
                                                      int temp=arr[x];
                                                      arr[x]=arr[y];
                                                       arr[y]=temp;
                                                    }
                                             }
                                  }
                            }
                        }
               4、冒泡排序
                      class ArrayTest3
                       {
                          public static void  bobbleSort(int[] arr)
                          {
                              for(x=0;x<arr.length-1;x++)
                                 {
                                     for(y=x+1;y<arr.length-x-1;y++)
                                           {//-x:是每次比较的元素减少,-1:避免角标越界
                                               if(arr[y]>arr[y+1])
                                                   {
                                                      int temp=arr[y];
                                                      arr[y]=arr[y+1];
                                                       arr[y+1]=temp;
                                                    }
                                             }
                                  }
                            }
                        }
                  5、 数组中自带的排序功能:Arrays.sort[arr];
                  6、数组的折半查找
                     前提是数据必须是有序的,才能使用折半查找。
                  事例:public static int halfSearch(int[] arr,int key)
                               {
                                       int min=0;
                                       int max=arr.length-1;
                                       int mid=(min+max)/2;
                                       while(arr[mid]!=key)
                                        {
                                              if(key>arr[mid])
                                                    min =mid+1;
                                                 max=mid-1;
                                                 if(min>max)
                                                    return-1;
                                                 mid=(min+max)/2;
                                               
                                           }
                                          return mid;
                                }
     (三)二维数组
           1、二维数组的格式:
                  二维数组类型[][] 数组名= new 数组类型[个数][个数]
              
四、内存结构
    Java程序在运行过时,需要在内存中分配空间,为了提高运算效率,对内存空间进行了不同区域的划分,因为每一片区域都有特定处理数据方式和内存管理方式。
   (一)栈内存
      用于存储局部变量,当数据使用完时,所占空间会自动释放。
    (二)堆内存
       数据和对象以及通过new创建的实例对象都存放在堆内存中。每个实体都有内存地址值 ,实体中的变量都有默认初始化值null。实体不再被使用了,会在不确定的时间内被垃圾      回收器回收。
    (三)方法区
         又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class,static的方法。方法区中包含的都是在整个程序中永远唯一的元素,如class、static变量。
    (四)本地方法区
    (五)寄存器

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值