fourday_java

1、封装与继承

封装性:

1>、方法是一种封装

2>、关键字private也是一种封装

将一些细节信息隐藏,对外部不可见。

  • private关键字:

/*
问题描述:定义Person的年龄时,无法阻止不合理的数值被设置
解决方案:用private关键字将需要保护的成员变量进行修饰
一旦使用private,本类之内随意用,本类之外不可直接访问
间接访问private使用Getter/Setter方法
Getter/Setter方法必须写成:getXxx,setXxx;
对于Getter来说不能有参数,返回值与成员变量对应
对于Setter来说不能有返回值,参数类型和成员变量对应
*/
public class Person {
  String name;
  private int age;
  public void show(){
      System.out.println("姓名:"+name+",年龄:"+age);
  }
  //访问private的方法
  public void setAge(int age){
      if(age>=0&&age<=120) {
          this.age = age;
      }else {
          System.out.println("数据不合理");
      }
  }
  public int getAge(){
      return age;
  }
}
public class PersonDome01 {
  public static void main(String[] args) {
      Person ps=new Person();
      ps.name="老王";
      ps.setAge(123);
      ps.show();//姓名:老王,年龄:23
  }
}

对于boolean类型的get与set的方法

private boolean male;//是不是男性
public void setMale(boolean b){
  male=b;
}
public boolean isMale(){//对于基本类型当中的boolean类型
                      // ,Getter方法一定要写成isXxx,Setter不变
  return male;
}

System.out.print("是男性吗?"+ps.isMale()) // true or false

  • this关键字:

当一个类中成员变量与参数变量重名,优先使用参数变量

若要使用本类中的成员变量,需要使用this.成员变量名

**this就是调用方法的对象,谁调用方法,谁就是对象。

2、构造方法

它是专门创建对象的方法,当通过new来创建对象时,其实就是在调用构造方法

格式:

public 类名称(参数类型 参数名称){}

注意事项:

1>、构造方法的名称必须和所在类名称完全一样

2>、构造方法不要写返回值类型,void也不要写。

3>、不能return一个具体的返回值

4>、如果没有编写构造方法,编译器默认一个构造方法,无参数,不做任何事情。

5>、一旦编写了至少一个构造方法,那么编译器不会在默认无参构造。

6>、构造方法可以重载(有参数与无参数的构造方法)

3、定义一个标准的类

要满足下面四个组成部分

  • 所有的成员变量都要使用private

  • 每个成员变量都要与get/set方法(快捷键Alt+Insert)

  • 编写一个无参数的构造方法

  • 编写一个有参数的构造方法

一个标准的类也叫 Java Bean

4、API

它是应用程序编程接口,是一本程序员字典,是JDK中提供给我们使用的类的说明文档,这些类将底层的代码实现封装了起来,我们不需要关心这些类的生成,只需要学习如何使用。

5、匿名对象

格式: new 类名称();

注意事项: 匿名对象只能使用一次,下次在使用就要创建新的对象 使用建议:如果确定有一个对象只需使用唯一的一次,就可以用匿名对象

6、匿名对象作为参数与返回值

public static void main(String[] args) {
/* //普通使用
  Scanner in =new Scanner(System.in);
  int num=in.nextInt();
  //匿名对象使用方式
  int num1=new Scanner(System.in).nextInt();//2
  System.out.println("输出:"+num1);//输出:2

  */
  //使用匿名对象进行传参
  methodParam(new Scanner(System.in));
  System.out.println("输出:"+methodParam01());
}
public static void methodParam(Scanner sc){
  double num=sc.nextDouble();
  System.out.println(num);
}
//匿名对象作为返回值
public static double methodParam01(){
  return new Scanner(System.in).nextInt();
}

7、Random随机数

Random r=new Random(); r.nextInt();//产生的数字范围在正负20亿之间 r.nextInt(10);//产生的数字范围在[0,10)之间,左闭右开

若想要[1,10]则r.nextInt(10)+1

8、ArrayList集合

数组的长度不可以随便改变 但是集合的长度可以改变 对于ArrayList来说,有一个<E>代表泛型 泛型:也就是装在集合的所有元素,全部统一的什么类型。只能是引用类型,不能是基本类型

public static void main(String[] args) {
  ArrayList<String>list=new ArrayList<>();
  System.out.println(list);//[] 不会产生null
  list.add("你好");
  list.add("我好");
  System.out.println(list);//[你好, 我好] 输出格式:内容以逗号+空格隔开
}

常用的方法

public boolean add(E e);向集合当中添加元素,参数的类型和泛型一致

public E get(int index);从集合中获取元素,参数是索引编号,返回值就是对应位置的元素

public E remove(int index);从集合当中删除元素,参数是索引编号,返回值就是被删除的元素

public int size();集合的尺寸长度,返回值是集合中包含的元素个数。

public static void main(String[] args) {
  ArrayList<String> list=new ArrayList<>();
  System.out.println(list);
  //Add
  list.add("你好");
  list.add("我好");
  System.out.println(list);//[你好, 我好]
  boolean add=list.add("大家好");//add的返回类型为布尔型
  System.out.println(add);//true
  //get
  String hello=list.get(2);//get的参数是集合索引,从0开始
  System.out.println(hello);//大家好
  //remove
  String hello1=list.remove(2);//移除下标为2的元素
  System.out.println(hello1);//返回值为 移除的元素 大家好
  //size
  System.out.println(list.size());//返回值是集合元素的个数 2

}

集合的遍历

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

  System.out.print(list.get(i)+" ");//你好 我好

}

9、ArrayList集合

存储基本数据类型 一般这样写 ArrayList<int> list=new ArrayList<>()是错误的,那怎样才能存储基本数据类型呢

解决方法 使用包装类(引用类型,包装类位于Java.long包下)

基本类型  byte short  int  long  float  double  char  boolean 

包装类   Byte Short  Integer  Long Float  Double  Character  Boolean

自动装箱:基本类型-->包装类型

自动拆箱:包装类型-->基本类型

public class ArrayListDome01{

  public static void main(String[] args){

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

    list.add(100); list.add(200);

    int num=list.get(1);//自动拆箱

    System.out.println(num);//200

  }

}

posted @ 2021-06-23 17:45  别不开心,过得去  阅读(87)  评论(0)    收藏  举报