Java之路

1.创建类

成员变量 - - 既属性

成员方法 -  -   - public void eat(){}   没有static !!

实例化格式: 类名称 对象名称 = new 类名称();

 使用对象类型作为方法的参数: 代码:

public class FaceObject {
    public static void main(String[] args) {
        Student s1 = new Student();
        System.out.println(s1.age);
        s1.eat();
        meetingMethod(s1);
    }
    public static void meetingMethod(Student x){
        System.out.println(x.age);
        x.eat();
    }

}

2.局部变量和成员变量的不同

1.定义的位置不同!!!

  局部变量,在方法的内部

  成员变量,在方法的外部,直接写在类当中

2.作用范围不一样!!!

  局部变量,只有方法当中才可以使用

3.默认值不一样

  局部变量,没有默认值

  成员变量,如果没有赋值,默认会有一个起始值,规则和数组一样

4.内存的位置不一样

  局部变量:位于栈内存

  成员变量:位于堆内存

5.生命周期

  局部变量:随着方法进栈而诞生,随着方法出栈而消失

  成员变量:随着对象创建而诞生,随着对象垃圾回收而消失

3.  Private关键字

private的含义
1. private是一个权限修饰符,代表最小权限。
2. 可以修饰成员变量和成员方法。
3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。

可以通过setXxx 和 getXxx 的方法对成员变量进行限定:

public class Student{
    //成员变量
    String name;
    private int age;

    //成员方法
    public void introduce(){
        System.out.println("大家好,我是" + name + "年龄:" + age );
    }
    //专门用于向成员变量age设置数据
    public void setAge( int num){
        if(num >= 0 && num <= 100){
            age = num;
        }else{
            System.out.println("您输入的数据不合理");
        }
    }

    //这个方法用于获取age数据
    public int getAge(){
        return age;
    }
  public boolean isMale(){ //布尔值的getter方法比较特殊
return true;
}
}

此时其他类想访问时就只能通过setter和getter方法对age进行设定和取值了

4.this关键字

谁调用的方法,谁就是this

用于类内部方法的参数和成员变量重名时区分

5.构造方法

一个完整的类:

public class Student{
    private String name;
    private int age;
    private boolean male;

    //无参数的构造方法
    public Student(){}

    //全参数的构造方法
    public Student(String name, int age, boolean male){
        this.name = name;
        this.age = age;
        this.male = male;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isMale() {
        return male;
    }

    public void setMale(boolean male) {
        this.male = male;
    }
}

 6.API、Scanner类

API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给我们使用的类的说明文档。

这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。

只有java.lang下的类不需要导包,其他都需要 import+路径.类名称;  来进行导入

Scanner类的功能可以实现键盘输入,输入数据到程序当中

(1)获取键盘输入的数字或者字符串

// System.in 表示从键盘输入
        Scanner s1 = new Scanner(System.in);
        int num = s1.nextInt();  //其实这里是把获取的字符串转换为了数字
        System.out.println("用户在键盘输入的数字为" + num);
        //获取键盘输入的字符串
        String str = s1.next();
        if(str != "小三"){
            System.out.println("你不是我的主人!");

7.匿名对象

只有右边的创建对象,没有左边的赋值语句  匿名对象只能使用唯一的一次,下次再用不得不在创建一个新对象;

使用场景:

public class DemoScanner{
    public static void main(String[] args) {
        //匿名对象的使用
        int num = new Scanner(System.in).nextInt();
        System.out.println("输入的数值为" + num);
    }
}

匿名对象作为方法的参数和返回值的情况:

public class DemoScanner{
    public static void main(String[] args) {
        //匿名对象的使用
        int num = new Scanner(System.in).nextInt();
        System.out.println("输入的数值为" + num);
        
        //Scanner匿名对象作为参数传入方法中
        methodS(new Scanner(System.in));
        
        //从方法中获取匿名对象并使用
        Scanner s1 = methodReturn();
        int num1 = s1.nextInt();
        System.out.println(num1);
    }
    public static void methodS(Scanner s){
        int num = s.nextInt();
        System.out.println("输入的是" + num);
    }
    public static Scanner methodReturn(){
        return new Scanner(System.in);
    }

}
参数和返回值

8.Random类  - 用来生成随机数字

nextInt()方法:生成的数字有正负

它的重载方法可以加参数,参数为左闭右开区间  nextInt(3) 的区间为[0-3)

练习:随机生成13到25的数字

public class DemoRandom {
    public static void main(String[] args) {
        Random r = new Random();
        //随机生成13到25的数字
        for (int i = 0; i < 10; i++) {
            int num1 = r.nextInt(13)+13;
            System.out.println(num1);
        }
    }
}

数字猜谜游戏:

import java.util.Random;
import java.util.Scanner;

public class DemoRandom {
    public static void main(String[] args) {
        int snum = new Random().nextInt(100);
        System.out.println(snum);
        while(true) {
            System.out.println("请输入您猜的数字");
            int num = new Scanner(System.in).nextInt();
            if (num > snum) {
                System.out.println("你猜错啦!数字大了");
            } else if(num == snum){
                System.out.println("回答correct");
                break;
            }else{
                System.out.println("数字小了");
            }
        }
        System.out.println("恭喜回答正确游戏结束");
        }
        }
数字猜谜游戏

 8.ArrayList <E>   集合

<E>   指的是 < - - - 泛型 : 也就是装在集合当中的所有元素,全都是统一的什么类型。

!!!泛型只能是引用类型,不能是基本类型!

直接打印得到的不是地址值,而是内容

(1)public boolean add(E,e)方法 - - - 添加元素  必须和创建类型一致 返回值 代表添加是否成功

(2)public E get ( int index)方法 - - -  从集合中获取元素 返回值为泛型的类型 

(3)public E remove (int index)方法 - - - 从集合中删除元素 返回值类型为泛型

(4)public int size() 方法 - - - 获取集合长度

使用:

public class DemoArrayList {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("chris");
        list.add("joe");
        list.add("lin");
        System.out.println(list);

        //获取集合的元素
        String name = list.get(2);
        System.out.println(name);

        //删除集合的元素
        String r1 = list.remove(1);
        System.out.println(r1);
        int size = list.size();
        System.out.println(size);

        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

如果希望向集合ArrayList里存储基本数据类型,必须使用数据类型对应的 ‘包装类’  - - - 包装类都位于java.Lang包下 所以不需要导包

包装类对应关系:除 int 对应 integer ; char 对应 character ;其他都是首字母大写

从jdk1.5开始支持自动装箱 拆箱 所以获取值时不需要用Integer来接收,会自动拆箱

往集合里添加整形类型:

ArrayList<Integer> i1 = new ArrayList<>();
        i1.add(100);
        i1.add(134);
        System.out.println(i1);
        int num1 = i1.get(1);

练习1:创建6个随机数字加入集合,并遍历集合

ArrayList<Integer> list1 = new ArrayList<>();
        Random ran1 = new Random();
        for (int i2 = 0; i2 < 6; i2++) {
            int num = ran1.nextInt(33) + 1;
            list1.add(num);
            }
            for (int i3 = 0; i3 < list1.size(); i3++) {
                int listNum = list1.get(i3);
                System.out.println(listNum);
            }
随机数字加入集合并遍历

 练习2:创建一个有20个随机值的大集合,通过方法筛选出里面元素全是偶数的集合

package basicpart.day01;

import java.util.ArrayList;
import java.util.Random;

public class practise {
    public static void main(String[] args) {
        Random r1 = new Random();
        ArrayList<Integer> array1 = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            array1.add(r1.nextInt(100));
        }
        System.out.println(array1);
        ArrayList<Integer> resule = checkArray(array1);
        System.out.println(resule);

    }
    public static ArrayList<Integer> checkArray(ArrayList<Integer> list){
        ArrayList<Integer> array2 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            int num = list.get(i);
            if(num % 2 == 0){
                array2.add(num);
            }
        }
        return array2;
    }
}
方法筛选集合
原文地址:https://www.cnblogs.com/caixiaowu/p/12656214.html