#### hello

执行 javac Hello.java  生成  Hello.class

```

// Hello 要与文件名相同

public class Hello{

    // 程序执行的起点

    public static void main(String[] args){

        System.out.print("Hello world");

    }

}

```

#### 数据类型

    1.基本类型

        整数型 byte short  int long

        浮点型float double

        字符 char

        布尔boolean

    2.引用数据类型

    字符串 数组 类 接口

   

#### 关键字/标识符/常量

```

关键字

标识符

    不使用数字开头 

常量 

    字符串常量   双引号   'aaaaa'

    整数常量

    浮点数常量

    字符常量  单引号引起来的 只能有一个  'a'   'b'

    布尔常量  true false

    空常量  null

```

#### 变量

 *  变量名称不能重复

 *  float和long类型变量   F L 不能丢

 *  byte  short  数值不能超过范围

 *  没有赋值的变量不能直接使用

 *  变量使用不能超过作用域范围

   ```

    public class Bianliang{

     public static void main(String[] args) {

         int num1,num2;

        //  int num1=1,num2=2;

         num1 =10;

         num2 = num1 +10;

         System.out.println(num2);

         System.out.println("-----------");

         byte num3 = 30;

         System.out.println(num3);

         short num4 = 10;

         System.out.println(num4);

         long num5 = 20000;

         System.out.println(num5);

         float num6 = 2.5F;

         System.out.println(num6);

         double num7 = 2.5F;

         System.out.println(num7);

         char zf1 = 'A';

         System.out.println(zf1);

         boolean var1 =true;

         System.out.println(var1);

     }

 }

   ```

#### 类型

自动转换

 *  从小->大

强制转换

  int num=(int)100L;

          (要转换的类型)范围大的数据

* 注意:

强制使用不推荐使用

#### 运算符

```

加减乘除取余

+

-

*

/

%

自增自减

++   --

赋值运算符

=

+=

-=

*=

/=

%=

比较运算符

==

<

>

<=

> =

! =

逻辑运算符

&& 与

|| 或

!  非

三元运算符

数据类型 变量名称=条件判断?表达式a:表达式b

```

#### 方法

```

public static void 方法名称(){

}

```

```

public class Fangfa{

    public static void main(String[] args) {

        //调用方法

        farmer();

    }

    // 定义方法

    public static void farmer(){

        System.out.println("111");

        System.out.println("222");

        System.out.println("333");

    }

    public static void coo(){

        System.out.println("cook");

        System.out.println("321");

        System.out.println("123");

    }

}

```

#### 流程(if/switch/for/while)

```

if(表达式){

}else{

}

if(表达式){

}else if(表达式){

}else{

}

switch(表达式){

    case 常量值:

        语句体;

        break;

    default:

        语句体;

        break;

}

for(;;){

}

while(条件判断){

}

do{

}while(条件判断);

```

#### 方法调用

方法调用:

1. 单独调用

2. 打印调用

3. 赋值调用 

 

重载

```

    名称相同,

        1. 参数列表不同

        2. 参数类型不同

```

```

public class Fangfa0111{

    public static void main(String[] args) {

        int a=1;

        int b=2;

        System.out.println("-----");

        System.out.println(summ(a, b));//两数相加

        System.out.println(sum_lian(100));//1-某数的之和

        get_num_hello(5);

    }

    public static int summ(int a,int b){

        int c = a+b;

        return c;

    }

    public static int sum_lian(int a){

        int c=0;

        for(int i=0;i<=a;i++){

            c = c+i;

        }

        return c;

    }

    public static void get_num_hello(int a){

        for(int i=1;i<=a;i++){

            System.out.println("Hello");//1-某数的之和

        }

    }

    // 重载(名称相同,参数列表不同)

    public static int cz_sum(int a,int b){

        int c = a+b;

        return c;

    }

    public static int cz_sum(int a,int b,int c){

        int dd = a+b+c;

        return dd;

    }

    public static int cz_sum(int a,int b,int c,int d){

        int dd = a+b+c+d;

        return dd;

    }

}

```

#### 数组arr

1. 是一种引用数据类型

2. 数组中的多个数据,类型必须统一

3. 数组长度不可改变

 初始化

1. 动态初始化(指定长度)

2. 静态初始化(指定内容)

数据类型[] 数组名称 = new 数据类型[数据长度]

```

public class Arr{

    public static void main(String[] args) {

    

        // 动态初始化

        int[] arrayA = new int[300];

        double[] arrayB = new double[10];

        String[] arrayC = new String[5];

        //静态初始化

        int[] arrayD = new int[] {1,2,4,5,6,7};

        int[] arrayE = {1,2,4,5,6,7};

        //读取

        System.out.println(arrayE[1]);

        //赋值

        arrayA[1] = 50;

        System.out.println(arrayA[5]);//默认0  ''  0.0

        System.out.println(arrayA[1]);//50

        //获取长度

        System.out.println(arrayD.length);

        //数组遍历

        for(int i=0;i<=arrayD.length;i++){

            System.out.println(arrayD[i]);

        }

        //数组的最值

        //数组反转(使用第三方)

    }

    public static void get_sum(int[] arrayA){

    }

}

```

#### object

 导入包

import 包名称.类名称

如果同目录下不用写

Student stu = new Student()

stu.a

stu.a()

```

public class Obj{

    public static void main(String[] args) {

        int[] arrayD = new int[] {1,2,4,5,6,7};

        // System.out.println(arrayD.toString());

        Student stu = new Student();

        stu.aa();

        System.out.println(stu.bb);

    }

}

```

#### random

random 随机数

        int r = rand.nextInt();随机生成正负

        int r2 = rand.nextInt(10);//0-9

```

public class Random1{

    public static void main(String[] args) {

        

        // 生成随机数()

        Random rand = new Random();

        int r = rand.nextInt();

        System.out.println("随机数是:"+r);

        int r2 = rand.nextInt(10);

        System.out.println("随机数是:"+r2);//0-9

    }

}

```

#### scanner

 键盘输入

1.导包

import 

2.创建

3.使用

```

import java.util.Scanner;

public class Scann{

    public static void main(String[] args) {

        String str = "dsds";

        //创建

        Scanner sc = new Scanner(System.in);

        //使用

        //获取键盘输入数据

        // int num = sc.nextInt();

        // System.out.println(num);

        //求两个数的和

        System.out.print("请输入num1:");

        int num1 = sc.nextInt();

        System.out.print("请输入num2:");

        int num2 = sc.nextInt();

        int c = num1+num2;

        System.out.println(c);

    }

}

```

#### arraylist idea

```

import zf.com.Student;

import  java.util.ArrayList;

/**

 arraylist 使用

 1. 自定义学生类

 2. 创建集合 ,用来存学生对象

 3. 根据类创建4个学生对象

 4.将4个学生对象加到  add

 5.遍历集合 for size  get

 */

public class Arraylist_demo {

    public static void main(String[] args) {

        ArrayList<Student> list = new ArrayList<Student> ();

        Student one = new Student("a",20);

        Student two = new Student("b",22);

        Student three = new Student("c",24);

        Student four = new Student("d",25);

        list.add(one);

        list.add(two);

        list.add(three);

        list.add(four);

        for (int i = 0; i < list.size(); i++){

            Student stu = list.get(i);

            System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge());

        }

    }

}

```

```

import  java.util.ArrayList;

/**

Arraylist

 System.out.println(list);//[aa, bb, cc]

 printList(list);//{aa@bb@cc}

 */

public class Arraylist_demo1 {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String> ();

        list.add("aa");

        list.add("bb");

        list.add("cc");

        System.out.println(list);//[aa, bb, cc]

        printList(list);//{aa@bb@cc}

    }

    /**

     定义方法三要素

     1.返回值名称

     2.方法名称

     参数列表

     */

    public static void printList(ArrayList<String> list){

        System.out.print("{");

        for (int i = 0; i < list.size(); i++){

            String name = list.get(i);

            if(i==list.size()-1){

                System.out.print(name);

                System.out.print("}");

                break;

            }

            System.out.print(name+"@");

        }

    }

}

```

```

import  java.util.Random;

import  java.util.ArrayList;

/**

一个大集合存入20个随机数字,筛选其中偶数元素,

 放入小集合中

 */

public class Arraylist_demo2 {

    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<Integer> ();

        Random r = new Random();

        for (int i = 0; i < 20; i++) {

            list.add(r.nextInt(100+1));

        }

        ArrayList<Integer> smallList = getsmalllist(list);

        System.out.println(smallList);

        System.out.println(smallList.size());

    }

    /**

     * 接受大集合,返回小集合

     */

    public static ArrayList<Integer> getsmalllist(ArrayList<Integer> biglist){

        ArrayList<Integer> smalllist = new ArrayList<Integer> ();

        for (int i = 0; i < biglist.size(); i++) {

            int num = biglist.get(i);

            if (num %2==0){

                smalllist.add(num);

            }

        }

        return smalllist;

    }

}

```

```

import zf.com.Person;

import java.util.ArrayList;

/**

定义一个数组,用来存储3个Person对象

 数组缺点:一旦创建,长度不可改变

 ArrayList 集合

 ArrayList<Integer> list = new ArrayList<Integer> ();

    <> 泛型  定义数据的类型

    长度可随意改变

    ArrayList 打印,直接是值

    向集合中加数据 .add

    获取数据      .get

    删除          .remove

    获取长度        .size()

 */

public class Arraylist_person {

    public static void main(String[] args) {

        Person[] array = new Person[3];

        Person one = new Person("'迪丽热巴'",18);

        Person two = new Person("'鹿晗'",23);

        Person three = new Person("'陈赫'",22);

        array[0] = one;

        array[1] = two;

        array[2] = three;

        System.out.println(array[0]);//地址值

        System.out.println(array[1]);

        System.out.println(array[2]);

        System.out.println(array[0].getName());//'迪丽热巴'

        ArrayList<String> list2 = new ArrayList<> ();

        list2.add("aa");

        list2.add("bb");

        list2.add("cc");

        System.out.println(list2);

    }

}

```

```

import java.util.Scanner;

/**

 输入一个字符串,统计各种字符串出现的次数

 1. 输入Scanner

 2.键盘输入的字符串   String str = sc.next()

 3.定义四个变量,用来代表各种字符穿心的次数

 4.对字符串一个个进行检查 String->char[]  方法: toCharArray()

 5.遍历char[] 进行判断

 6.打印出现的次数

 */

public class Scanner_test {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("请输入一个字符串");

        String input = sc.next();

        int dx = 0;

        int xx = 0;

        int sz = 0;

        int qt = 0;

        char[] charArray= input.toCharArray();

        for (int i = 0; i <charArray.length; i++ ){

            char c =charArray[i];

            if ('A'<=c && c<='Z' ){

                dx++;

            }else if ('a'<=c && c<='z'){

                xx++;

            }else if ('0'<=c && c<='9'){

                sz++;

            }else {

                qt++;

            }

        }

        System.out.println("大写字母有:"+dx);

        System.out.println("小写字母有:"+xx);

        System.out.println("数字有:"+sz);

        System.out.println("其他有:"+qt);

    }

}

```

#### static

```

import zf.com.Static_t;

import java.util.Arrays;

/**

 * Arrays工具类

 Arrays.sort(arr1);  排序

 toString(数组)   数组->字符

 sort               排序 (小到大)

 */

public class Static_demo {

    public static void main(String[] args) {

        Static_t a = new Static_t();

        Static_t b = new Static_t();

        String str = "sdijsncdkncksdmco324";

        char[] arr1 = str.toCharArray();

        Arrays.sort(arr1);

        for (int i = 0; i < arr1.length; i++) {

            System.out.println(arr1[i]);

        }

    }

}

```

#### string

```

/**

String字符串类

 equals 比较

 equalsIgnoreCase  比较  忽略大小写

 length 长度

 concat 拼接字符串相当于+

 charAt 获取指定索引位置的单字符

 indexof   字符串首次出现的位置

 substring       截取

 tocharArray()  字符串改为字节数组

 getBytes()     当前字符串底层的字节数组

 replace        替换

 split          切割 字符串->数组

                数组->字符串

 */

public class String_test {

    public static void main(String[] args) {

        String a = "Hello";

        String b = "Hello";

        String c = "hello";

        String d = "hello,asasakndsknd,k4ji2o3n435no4n532o532";

        System.out.println(a.equals(b));//true

        System.out.println(a.equals(c));//false

        System.out.println(a.equalsIgnoreCase(c));//true 忽略大小写

        System.out.println(a.length());

        System.out.println(a.concat("'aaaa'"));//Hello'aaaa'

        System.out.println(a.charAt(2));//l

        System.out.println(a.indexOf("o"));//4

        System.out.println(d.substring(5));// asasakndskndk4ji2o3n435no4n532o532

        System.out.println(d.substring(5,10));// asas

//        cahr[] aa = d.toCharArray();

        String dd =  d.replace("hello","mc");

        System.out.println(dd);

        System.out.println("-----");

        String[] arr1 = d.split(",");

        System.out.println(arr1.length);

        System.out.println(arr1[1]);

    }

}

```

#### 面向对象

 面向对象

 封装/继承/多态

 继承

 1. 单继承

 2. 多级继承

```

public class Demo {

    public static void main(String[] args) {

        Zi zi = new Zi();

        zi.show();

        zi.method();

    }

}

```

#### 继承

```

public class Zi  extends Fu{

    int num = 20;

    //重写方法

    @Override

    public void method() {

        super.method();//调用父类的

        System.out.println("子类方法");

    }

    public void show() {

        int num = 30;

        System.out.println(num);//30 当前

        System.out.println(this.num);//20 子类的

        System.out.println(super.num);//10  父类的

    }

}

```

#### Math

 Math.abs(double num)   取绝对值

 .ceil        向上取整

 .floor      向下取整(抹零)

 .round      四舍五入

PI          圆周率

```

public class MathTest {

    public static void main(String[] args) {

        double min =-10.8;

        double max =5.9;

        for (int i = (int) min ; i <  max; i++) {

            int abs = Math.abs(i);

            if (abs > 6 || abs < 2.1){

                System.out.println(i);

            }

        }

    }

}

```

####  抽象方法

 抽象方法

 abstract

 抽象类和方法的使用

 1. 不能直接创建new抽象对象

 2. 必须用一个子类继承父类抽象父类

 3.子类覆盖重写父类当中的抽象方法   去掉abstract关键字

 4. 创建子类对象进行使用

 final 最后赋值

```

public abstract class Chouxiang {

    //抽象方法

    public abstract void eat();

}

```

 public > protected >  default  > private