Java基础五:构造方法、ArrayList

Java的构造方法

面向对象:属性和方法,当对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值
构造方法的格式: 修饰符 构造方法名(参数列表){方法体}
写法: 1.方法名与他所在类的名字相同
2.没有返回值,所以不需要指定返回类型,也不需要void
注:无论你是否定义了构造方法, 所有类都有构造方法,因为Java自动为你提供了一个无参构造方法,一旦你自己定义了构造方法,Java自动提供的默认的无参构造方法就会失效。无参必须,有参建议。
如果你不提供构造方法,系统会默认给你一个无参构造方法
如果你提供了构造方法,系统不会给你提供一个无参构造方法
构造方法时可以重载的, 既可以定义参数,也可以不定义参数

案例:学生类

public class Student {

    private String name;
    private int age;

    // 无参构造方法
    public Student(){
//        System.out.println("无参构造方法被调用");
    }

    //有参的构造方法,初始化学生类的时候
    public Student(String name,int age){
        this.age = age;
        this.name = name;
        System.out.println("有参构造方法被调用" + this.name);
    }
}

JavaBean

JavaBean (爪哇 的 咖啡豆) 是一种Java的标准规范.
符合JavaBean的类要求类:1、必须是具体的和公共的 2、并且具有无参构造方法 3、提供用来操作成员变量的set和get方法, 和数据库中表字段对应的实体类就是一个典型JavaBean

案例:学生类JavaBean

package com.company;

public class StudentJavaBean {
    // 成员变量
    private String name;
    private int age;
    private int salary;
    // 无参构造方法(必须)
    public StudentJavaBean(){
    }
    // 有参构造方法(建议)
    public StudentJavaBean(String name, int age){
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    // 成员方法
    // get***()
    public String getName(){
        return name;
    }
    // set***()
    public void setName(String name){
        this.name = name;}



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


    public int getSalary(){
        return salary;
    }
    public void setSalary(int salary){
        this.salary = salary;
    }
}

创建TestJavaBean

package com.company;

public class TestJavaBean {
    //  JavaBean 爪哇 的 咖啡豆 是一种Java的标准规范.
    //  符合JavaBean的类要求类1、必须是具体的和公共的/2、并且具有无参构造方法
    // 3、提供用来操作成员变量的set和get方法, 和数据库中表字段对应的实体类就是一个典型JavaBean

    // 格式
    // 成员变量
    // 无参构造方法[必须]
    // 有参构造方法[建议]
    // 成员方法
    // get***()
    // set***()

    public static void main(String[] args) {
        // 无参的构造方法的调用
        StudentJavaBean s = new StudentJavaBean();
        s.setName("李白");
        s.setAge(9999);
        s.setSalary(6666);
        System.out.println(s.getName()+"---"+s.getAge()+"---"+s.getSalary());

        // 有参的构造方法的调用
        StudentJavaBean s2 = new StudentJavaBean("杜甫", 8888);
        System.out.println(s2.getName()+"---"+s2.getAge());

    }

    }

API

API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的字典 ,是JDK中提供给 我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
API使用步骤:
1.打开帮助文档。
2.点击显示,找到索引,看到输入框。
3.你要找谁?在输入框里输入,然后回车。
4.看包。java.lang下的类不需要导包,其他需要。
5.看类的解释和说明。
6.学习构造方法。
7.使用成员方法。

Scanner类

Scanner类:一个可以解析基本类型和字符串的简单文本扫描器。

案例:读取通过键盘录入的数据

//创建对象  格式:数据类型 变量名 = new 数据类型(参数列表); 
Scanner scanner = new Scanner(System.in);
//调用方法  格式:变量名.方法名();
int i = scanner.nextInt();

Scanner使用步骤
1.查看类
java.util.Scanner :该类需要import导入后使用。
2.查看构造方法
public Scanner(InputStream source) : 构造一个新的 Scanner ,它生成的值是从指定的输入流扫描的。
3.查看成员方法
public int nextInt() :将输入信息的下一个标记扫描为一个 int 值。
使用Scanner类,完成接收键盘录入数据的操作,代码如下:

//1. 导包
import java.util.Scanner;
public class Demo01_Scanner {
public static void main(String[] args) {
//2. 创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//3. 接收数据
System.out.println("请录入一个整数:");
int i = sc.nextInt();
//4. 输出数据
System.out.println("i:"+i);
}
}

案例:键盘录入两个数据并求和

package com.company;

import java.util.Scanner;

public class APIDemo02 {
    public static void main(String[] args) {
        //输入两位数求和
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入两个数(求和):");
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        int sum = num1 + num2;
        System.out.println(num1 + "+" + num2 + "的和为" + sum);

    }
}

案例:键盘录入三个数据并获取最大值

package com.company;

import java.util.Scanner;

public class APIDemo1 {
    public static void main(String[] args) {
        // 1. Scanner类(System.in是指通过键盘录入数据)
        // 除了java.lang包下的类不需要导入,其他必须导入才能使用
        //导包格式: import 包名,类名;
        //调用方法 变量名.方法名() + altEnter
        // 2. Random类
        // 3. ArrayList类
        //三个数求最大值
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入三个数(求最大值):");
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        int z = scanner.nextInt();
        int max;
        if(x >= y && x >= z){
            max = x;
        }else if (y >= x){
            max = y;
        }else{
            max = z;
        }
        System.out.println("最大的数为:" + max);
    }
}
匿名对象

匿名对象:没有变量名的对象。创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用场景非常有限。
格式:
new 类名(参数列表);
例: new Scanner(System.in);
应用场景:
1.创建匿名对象直接调用方法,没有变量名。
new Scanner(System.in).nextInt();
2.一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();
一个匿名对象,只能使用一次。
3.匿名对象可以作为方法的参数和返回值作为参数

public static void main(String[] args) {
// 普通方式
Scanner sc = new Scanner(System.in);
input(sc);
//匿名对象作为方法接收的参数
input(new Scanner(System.in));
}
public static void input(Scanner sc){
System.out.println(sc);
}
}

//作为返回值
// 普通方式
Scanner sc = getScanner();
}
public static Scanner getScanner(){
//普通方式
//Scanner sc = new Scanner(System.in);
//return sc;
//匿名对象作为方法返回值
return new Scanner(System.in);
}
}

Random类

Random类:
1.查看类
java.util.Random :该类需要 import导入使后使用。
2.查看构造方法
public Random() :创建一个新的随机数生成器。
3.查看成员方法
public int nextInt(int n) :返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的int 值。

案例:使用Random类,生成3个10以内的随机整数

//1. 导包
import java.util.Random;
public class Demo01_Random {
public static void main(String[] args) {
//2. 创建键盘录入数据的对象
Random r = new Random();
for(int i = 0; i < 3; i++){
//3. 随机生成一个数据
int number = r.nextInt(10);
//4. 输出数据
System.out.println("number:"+ number);
        }
    }
}

案例:猜数字,每次猜会提示数字大还是小

public class Test02Random {
    public static void main(String[] args) {
        Random random = new Random();
        int number = random.nextInt(100)+1;

        while (true){
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入您猜的数字:");
            int i = scanner.nextInt();
            if( i > number){
                System.out.println("您猜的的数字大了");
            }else if(i < number){
                System.out.println("您猜的的数字小了");
            }else{
                System.out.println("恭喜您猜对了!!!");
                break;
            }
        }
    }
}

ArrayList类

ArrayList类:对象数组。java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
ArrayList使用步骤
1.查看类
java.util.ArrayList <E> :该类需要 import导入使后使用。
<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使
用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
代码如下:ArrayList<String>,ArrayList<Student>
2.查看构造方法
public ArrayList() :构造一个内容为空的集合。
3.基本格式:ArrayList<String> list = new ArrayList<String>();
4.在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式:ArrayList<String> list = new ArrayList<>();
5.查看成员方法
public boolean add(E e) : 将指定的元素添加到此集合的尾部。
参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据
类型的对象。

案例:使用学生数组,存储三个学生对象

public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
return age;
}
publicvoid setAge(int age) {
this.age = age;
}
}
public class Test01StudentArray {  public static void main(String[] args) {  //创建学生数组
Student[] students = new Student[3];
//创建学生对象
Student s1 = new Student("曹操",40);
Student s2 = new Student("刘备",35);
Student s3 = new Student("孙权",30);
//把学生对象作为元素赋值给学生数组
students[0] = s1;
students[1] = s2;
students[2] = s3;
//遍历学生数组
for(int x=0; x<students.length; x++) {
Student s = students[x];
System.out.println(s.getName()+"‐‐‐"+s.getAge());
}
}
}

案例:使用ArrayList类,添加三个字符串元素到集合中

public class Test02StudentArray {
    public static void main(String[] args) {
        /**
         *  new ArrayList<Student>(); // <E>表示一种指定的数据类型,叫做泛型
         *  new ArrayList<String>(); // <E>表示一种指定的数据类型,叫做泛型
         *  new ArrayList<Integer>(); // <E>表示一种指定的数据类型,叫做泛型
         */
        ArrayList<StudentJavaBean> list = new ArrayList<>();
        // 指定元素添加到集合的尾部
        // list.add("张三");
        // 创建刘、关、张、赵 四位同学的信息
        StudentJavaBean s1 = new StudentJavaBean("刘玄德", 50);
        StudentJavaBean s2 = new StudentJavaBean("关云长", 45);
        StudentJavaBean s3 = new StudentJavaBean("张翼德", 42);
        StudentJavaBean s4 = new StudentJavaBean("赵子龙", 41);

        // 进行添加操作
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);

        // 打印list
        System.out.println(list);

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

        // 遍历ArrayLisy的第一种方式fori 循环
        for (int i = 0; i <list.size() ; i++) {
//            StudentJavaBean s = list.get(i);
//            System.out.println(s.getName());
            System.out.println(list.get(i).getName());
        }
    }
}

元素的增删改查和遍历
public boolean add(E e) :将指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

public class Demo01ArrayListMethod {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> list = new ArrayList<String>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
//public E get(int index):返回指定索引处的元素
System.out.println("get:"+list.get(0));
System.out.println("get:"+list.get(1));
System.out.println("get:"+list.get(2));
//public int size():返回集合中的元素的个数
System.out.println("size:"+list.size());
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
System.out.println("remove:"+list.remove(0));
//遍历输出
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}

案例:生成6个1~33之间的随机整数,添加到集合,并遍历

public class Test01ArrayList {
public static void main(String[] args) {
// 创建Random 对象
Random random = new Random();
// 创建ArrayList 对象
ArrayList<Integer> list = new ArrayList<>();
// 添加随机数到集合
for (int i = 0; i < 6; i++) {
int r = random.nextInt(33) + 1;
list.add(r);
}

//  遍历集合输出
for  (int  i  =  0;  i  <  list.size();  i++)  {

System.out.println(list.get(i));
         }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351