黑马程序员技术交流社区

标题: java 基础入门总结 [打印本页]

作者: 664941114    时间: 2016-7-10 11:27
标题: java 基础入门总结
1.环境配置:JDK,JRE,JVM,Path
   JDK:Java Develop Kit
        Java开发工具 + JRE
   JRE:Java Runtime Environment
        核心类库+JVM
   Java跨平台的根本:
     不同操作平台(Mac,Linux,Windows)有对应版本的JVM
    path:
      目的:为了在任意路径下运行JDK安装路径下的bin目录下的exe命令
      配置的时候需要新建一个Java_Home变量
      Java_Home=JDK的安装路径
      path=%JDK的安装路径%;path其它路径

2.入门程序:HelloWorld
  public class HelloWorld{//public 类名必须和.java的源文件名一致
     public static void main(String[] args) {
              System.out.println("HelloWorld");
     }

  }

3.常量:死数据,一旦写好,不可改变,恒定不变的量
  整数常量:1 2
  小数:1.23,3.2
  字符:'A' //'' Java不支持空字符
  字符串:""  "abc" //子串:由字符串中的相邻字符组成的子串: ab bc ac不是 abc


4.变量:可以改变的量
        a.定义
          int a=3;//开辟一个4byte内存的空间,然后把3以二进制的形式,存放在这个内存单元中
          String str="abc";
        b.使用
          赋值: int a=3;
          取值: System.out.println(a);
        c.局部变量与成员变量作用域  
          class Demo{
        static int i=3;//成员变量,作用域:整个类,类中所有的方法都可以方法访问

        public static void main(String[] args) {
                method(10);
                for (int i=0;i<3;++i) {//i也是一个局部变量,作用域仅在for循环中,超出for循环,i变量将要被释放
                        System.out.println(i);
                }
        }
        public static void method(int a){//a=10 a为method方法的形参,同时也是一个局部变量 作用域仅在method()方法内部
                int c=3;                     //当method()方法调用结束,局部变量a和c将被销毁
                System.out.println(i);
        }
          }


5.运算符
        a.算术运算符:+,-,*,/,%,++,--
          1.+:
         a.求出两个数的和
         b.任意类型数据通过+与字符串拼接最终的结果都是一个字符串
      2.-,*:
        和数学中的运算一致
      3./ %:求一个三位数各个位数
        345:
         345%10=5//个位数
         345 /10 %10= 4//十位数
         345 /10/10 %10=3//百位数
       4.++,--
        int a=3;
        int j=a++;//后置++,先使用a的值,然后a=a+1;
                  //j=3 a=4
                  //int temp=a;
                  //a=a+1;
                  //j=temp;

        j=++a; //先a=a+1,然后在使用a的值
               //j=5 a=5
       无论是自增还是自减会自动强转
         byte b=1;
         b++;//b=(byte)(b+1);

        b.赋值运算符:=,+=,-=,/=:会自动强转
          +=:
            byte a=3;
            a+=3;//a=(byte)(a+3)

        c.比较运算符:>,<,>=,<=:运算结果都是boolean类型
          3>=4 false
        d.逻辑运算符:&&,&,|,||,!,^
         &&:短路与 且
            参与运算的表达式都必须是boolean类型表达式,并且运算结果也必须是boolean类型
            如果第一个表达式运算结果为false,不再运算第二个表达式,整个表达式结果为false
         ||:短路或 或
             参与运算的表达式都必须是boolean类型表达式,并且运算结果也必须是boolean类型
             如果第一个表达式运算结果为true,不再运算第二个表达式,整个表达式结果为true

      !:!true false !false true
        boolean flag=flase;
        if(!flag){

        }
       
        e.三元运算符:?:
     int a=10,b=3,c;
           c= a>3 ?(b>5? 6 : 8) : 6; //c=8,三元运算符的嵌套使用

7.变量自动类型提升与强制类型转换
  1.自动类型提升:
      a.byte->short->int->long->float->double
            char->int->long->float->double
      任选箭头方向的两种类型都是自动类型提升
      b.把int类型的常量赋值给byte,short,char类型的变量,如果常量在
        byte或short或char的范围内编译通过
        byte b=127;//-128~127
      c.如果byte,short,char类型的变量做数学运算,byte,short,char
        会自动类型提升为int在参与运算
  2.强制类型转换:
    byte<-short<-int<-long<-float<-double
          char<-int<-long<-float<-double

     byte<->char:无论是从byte->char还是char->byte都需要强制类型转换
     short<->char:无论是从short->char还是char->short都需要强制类型转换


8.选择结构:if,switch
  1.if格式:
    if(布尔表达式){

    }

    if(布尔表达式){


    }else{

    }


    if(布尔表达式1){

    }else if(布尔表达式2){

    }else if(布尔表达式2){

    }...else{

    }
  2.switch:
    根据变量的值去找对应的case匹配如果一个都不匹配,就去找default
   int x=3
   switch(x){//变量类型byte,short,char,int JDK1.5枚举,JDK1.7 String
      case 1:{//大括号可有可无
       // 可以写任意语句(for,if,方法调用)

      }
      break;
      case 2:{
              //可以写任意语句(for,if,方法调用)
      }
      break;
      ....
      default:{
              //可以写任意语句(for,if,方法调用)

      }
    }

9.循环结构:for,while,do..while()
  数组遍历:
    int[] arr=new int[10];
    for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
    }

    int i=0;
    while(i<arr.length){
      //第一种
       System.out.println(arr[i++]);//先使用i的值,在i=i+1


       //第二种(推荐)
       //System.out.println(arr[i]);
      //i++;
    }

           int i=0;
           do{
                   System.out.println(arr[i]);
                   i++;
           }while(i<arr.length);


  集合遍历:
          GirlFriend MM=new GirlFriend();//里面属性有默认值,name=null hair=null,eye=null,height=0.0
          MM.name="欧阳伊";//赋值动作
          MM.hair="长发及腰";
          MM.eye="大眼睛";
          MM.height="1.70";
          System.out.println(MM.name+".."+MM.hair);//取值动作

      ArrayList<GirlFriend> al=new ArrayList<GirlFriend>();
      al.add(MM);

      for (int i=0;i<al.size();i++) {
        GirlFriend girlFriend= al.get(i);
        System.out.println(girlFriend.hair);
      }

10.break,continue 关键字:break可以用在switch和循环结构,continue只能用在循环中
   for(int i=0;i<3;++i){//②
           for(int j=0;j<3;++j){//①
      // break;//直接跳出①循环
      // continue;//结束①的本次循环,开始下次循环

           }
           //break;//直接跳出②循环
           //continue;///结束②的本次循环,开始下次循环
   }



11.方法/函数/功能
   a.定义
     //参数类型和返回值类型可以为引用数据类型和基本数据类型
     //返回值类型可以为void
     public static void main(String[] args) {
             return;
     }
   b.调用
     public static void main(String[] args) {
             int a=3,b=4
             method(a,b);
             System.out.println(a+" "+b);//3,4 基本类型的值传递仅仅是拷贝副本,method()方法中a,b的改变不影响main的a,b


        String[] str={"a","def","ggg"};//str相当于门牌号
        method(str);
        System.out.println(str[1]);//张三丰

     }
     public static void method(int a,int b){
              a=a+1;
              b=b+2;
     }
     public static void method(String[] str){ //拷贝一个门牌号给method的str,method的str和main的str访问的是同一个数组
             str[1]="张三丰";
     }
   c.重载:
    方法名相同,参数列表(参数个数,参数的类型,参数的类型的顺序)不同
    与方法返回值无关




12.引用类型:
   a.特点(存放的值特点)
     引用类型变量存的都是对象的地址值
   b.JDK 已有的引用数据类型:
     Scanner,Math,String,Random,ArrayList(<>,CRUD,基本类型存储),数组类型(定义,使用,2个错误,存储,默认值)

     1.Scanner:键盘录入
      a.导入 java.util.Scanner
      b.Scanner scanner=new Scanner(System.in);//System.in关联键盘
      c.scanner.nextInt(),scanner.nextDouble(),scanner.next();scanner.nextLine();
     2.Math:数学类,有一些与数学相关的函数
      a.不需要导包,因为Math类在java.lang
      b. long l=Math.round(3.5)//4
         double d=Math.round(3.4)//自动类型提升,3.0
         Math.max(3,4)//4
     3.String:专门处理字符串
      a.String类在java.lang包下
      b.String str="ab c ";
        str.length();//5
        String str2=str.trim();//str2="ab c"
        String str3=str.substring(1,1);//"b"

     4.Random:专门用来产生一个随机数(验证码)
      a.Random类在java.util.Random 需要导包
      b.Random random=new Random();
        random.nextInt(99)+1;//[1,99](主要)
        random.nextDouble();//[0.0,1.0)

     5.ArrayList:集合类,只能存放引用数据类型
      a.ArrayList在java.util包下,需要导入
      b.
        ArrayList<你要在集合中存放什么类型,这就写什么类型> al=new  ArrayList<你要在集合中存放什么类型,这就写什么类型>();
        int-->Integer
        char-->Character
      c.al.add(跟尖括号中的类型一致)
        al.get(int index);//集合中的元素也是从0开始编号
        al.size();//获取集合长度
    6.数组类型:
     int[] arr=new int[3];//int[]代表引用数据类型
                          //相当于声明了3个int类型变量 arr[0],arr[1],arr[2]
   c.自定义引用数据类型:
    //自定义数据类型的定义
     class Person{
       //定义所有人共有的属性
       String name;
       String sex;
       int  age;


     }
    //自定义数据类型的使用
     Person p=new Person();

    //为这个人的各项属性赋值
     p.name="高圆圆";
     p.sex="Female";
     p.age=33;

   //取出这个人的各项属性值
    System.out.println("姓名是 "+p.name+"性别是 "+p.sex+"年龄是 "+p.age);



作者: L余生.    时间: 2016-7-10 12:55
求内部类的详解
作者: gjtdxjd    时间: 2016-7-10 13:50
保存复习用!
作者: GorgeousSoul    时间: 2016-7-10 14:19
写的挺详细的,好极了
作者: 896575538    时间: 2016-7-10 14:48
好东西,顶一下





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2