fourday_java
封装性:
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
自动装箱:基本类型-->包装类型
浙公网安备 33010602011771号