Java学习笔记:封装的学习

封装:将一些细节信息隐藏起来,对于外界不可见。比如说方法就是一种封装,关键字private也是一种封装。
(1)概述:是面向对象的三大特征之一(封装、继承、多态),是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。
(2)封装的原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 成员变量private,提供对应的getXxx()或者setXxx()方法。
(3)封装的好处:通过方法来控制成员变量的操作,提高了代码的安全性。把代码用方法进行封装,提高了代码的复用性。

private关键字
(1)是一个权限修饰符。
(2)可以修饰成员(成员变量和成员方法)。
(3)作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
(1)提供”get变量名()”方法,用于获取成员变量的值,方法用public修饰
(2)提供“set变量名(参数)"方法,用于设置成员变量的值,方法用public修饰
(对于Getter来说,不能有参数,返回值类型和成员变量对应)
(对于Setter来说,不能有返回值,参数类型和成员变量对应)
注意事项
对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变。
private关键字的使用:一个标准类的编写:
(1)把成员变量用private修饰
(2)提供对应的getXxx()或者setXxx()方法(第一个X是大写)

this关键字:this修饰的变量用于指代成员变量。当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量。如果要访问本类当中的成员变量,需要使用this,格式为this.成员变量名。
this:代表所在类的对象引用 (方法被哪个对象调用,this就代表哪个对象,也就是说通过谁调用的方法,谁就是this)

构造方法概述:构造方法是一种特殊的方法,它的作用是创建对象,它的功能是完成对象数据的初始化。当我们通过关键字new来创建对象的时候,其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称){
方法体
}

构造方法的注意事项
(1)如果没有定义构造方法,系统将会赠送一个默认的无参构造方法。如果定义了构造方法,系统将不再提供默认的构造方法。
系统赠送的是: public Student() {}
(2)如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法。
(3)构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样。
(4)构造方法不要写返回值类型,连void都不写。
(5)构造方法不能return一个具体的返回值。
(6)一旦编写了至少一个构造方法,那么编译器将不再赠送。
推荐使用的方式:无论是否使用,都手工书写无参构造方法。

标准类制作
一个标准的类通常要拥有下面四个部分:
(1)所有的成员变量都要使用private关键字修饰。
(2)编写一个无参数的构造方法。
(3)编写一个全参数的构造方法。
(4)为每一个成员变量编写一对Getter/Setter方法。
(注意事项:点击code,然后再点击generate可以快速生成想要的方法)

API:应用程序编程接口
Java API:指的就是JDK中提供各种功能的Java类。
API使用步骤
(1)打开帮助文档,点击显示,找到索引,看到输入框。
(2)要找什么,在输入框里输入,然后回车。
(3)看包。java.lang下的类不需要导包,其他需要。
(4)看类的解释和说明。
(5)学习构造方法,使用成员方法。

Scanner类的功能:可以实现键盘输入数据,到程序当中。
引用类型的一把使用步骤
(1)导包
import 包路径.类名称
(注意:如果需要使用的目标类,和当前类位于同一个包下,可以省略导包语句不写。只有java.lang包下的内容不需要导包,其他的包都需要import语句)
(2)创建
类名称 对象名=new 类名称();
(3)使用
对象名.成员方法名();

例子
Scanner使用的基本步骤:
1、导包
import java.util.Scanner;
导包的动作必须出现在类定义的上边
2、创建对象
Scanner sc=new Scanner(System.in);
上面这个格式里,只有sc是变量名,可以变,其他的都不允许变。
(System.in代表从键盘进行输入)
3、接收数据
int i=sc.nextInt();
上面这个格式里,只有i是变量名,可以变,其他的都不允许变。

匿名对象
匿名对象就是只有右边的对象(相对于创建对象的标准格式来说),没有左边的名字和赋值运算符。(匿名对象可以作为方法的参数和返回值)
格式: new 类名称();
注意事项:匿名对象只能使用唯一的一次,下次再用必须再创建一个新对象。
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象。

Random类用来生成随机数字
使用步骤:
(1)导包
import java.util.Random;
(2)创建
Random r=new Random(); //小括号当中留空即可
(3)使用
第一种:获取一个随机的int数字(范围是int所有范围,有正负两种)
int num=r.nextInt()
第二种:获取一个随机的int数字(参数代表了范围,左闭右开区间)
int num=r.nextInt(3) ( 实际代表的含义是:[0,3) )

集合概述
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。集合类有很大,先学一个ArrayList。
ArrayList(E): 可调整大小的整数实现;是一种特殊的数据类型,泛型。
(泛型:集合当中的所有元素,全都是统一的什么类型。同时,泛型只能是引用类型,不能是基本类型)
用法:在出现E的地方我们使用引用数据类型替换即可,例如:ArrayList(String) ArrayList(Student)
备注:集合概述中的Arraylist后面的括号都是尖括号
注意事项
(1)数组的长度不可以发生改变,但是ArrayList集合的长度是可以随意变化的。
(2)对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容是空,得到的是空的中括号:[ ]

ArrayList构造方法和添加方法
方法名 说明
(1)public ArrayList() 创建一个空的集合对象
(2)public boolean add(E e) 将指定的元素追加到此集合的末尾
(3)public void add(int index,E element) 在此集合中的指定位置插入指定的元素
注意事项
第二个是向集合当中添加元素,参数的类型和泛型一致,返回值代表添加是否成功。对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合来说,add添加动作不一定成功。
ArrayList集合常用方法
方法名 说明
public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
public E remove(int index) 删除指定索引处的元素,返回被删除的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数

如果希望向集合ArrayList当中存储基本数据类型,必须使用基本类型对应的“包装类”。
基本类型 包装类(引用类型,包装类都位于java.lang包下)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
注意
自动装箱:基本类型 --> 包装类型
自动拆箱:包装类型 --> 基本类型

String概述:String类在java.lang包下,所以使用的时候不需要导包。
String对象的特点
(1)通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同。
(2)以“ ” 方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护
String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都要被实现为此类的实例,也就是说,Java程序中所有的双引号字符串,都是String类的对象(就算没有new,也照样是)。

字符串的特点
(1)字符串的内容不可变,它们的值在创建后不能被更改。
(2)虽然String的值是不可变的,但是它们可以被共享。
(3)字符串效果上相当于字符数组(char[])但底层原理是字节数组(byte[])

创建字符串的常见方式
String构造方法:
方法名 说明
public String() 创建一个空白字符串对象,不含有任何内容
public String(char[] array) 根据字符数组的内容,来创建字符串对象
pubic String(byte[] array) 根据字节数组的内容,来创建字符串对象
直接创建:
String s=“abc”; 直接赋值的方式创建字符串对象,内容就是abc
注意事项
(1)直接写上双引号,就是字符串对象
(2)推荐使用直接赋值的方式得到字符串对象

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
(双引号直接写的字符串在常量池中,new的不在池当中)
使用==做比较:
(1)基本类型:比较的是数据值是否相同
(2)引用类型:比较的是地址值是否相同

字符串是对象,它比较内容是否相同,可以通过两个方法来实现的
(1)第一个方法叫equals()
public boolean equals(Object anObject): 参数可以是任何对象,只有参数是一个字符串并且内容相同才会给true,否则返回false。
(2)第二个方法叫equalsIgnoreCase()
public boolean equalsIgnoreCase(String str): 忽略大小写,进行内容比较。
注意事项
(1)任何对象都能用Object进行接收。
(2)equals方法具有对称性,就是a.equals(b)和b.equals(a)效果一样。
(3)如果双方比较一个常量一个变量,推荐把常量字符串写在前面。
推荐:“abc”.equals(str) 不推荐:str.equals(“abc”)
(可能会出现空指针异常)

String当中与获取相关的常用方法
public int length(): 获取字符串当中含有的字符个数,拿到字符串长度。
public String concat(String str): 将当前字符串和参数字符串拼接成为返回值新的字符串。
public char charAt(int index):获取指定索引位置的单个字符。(索引从0开始)
public int indexOf(String str): 查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1。
public String substring(int index): 截取从参数位置一直到字符串末尾,返回新字符串。
pubic String substring(int begin,int end): 截取从begin开始,一直到end结束,中间的字符串。([begin,end) 包含左边,不包含右边)
public char[] toCharArray(): 将当前字符串拆分成为字符数组作为返回值
public byte[] getBytes(): 获得当前字符串底层的字节数组
public String replace(CharSequence oldString,CharSequence newString): 将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串。
public String[] split(String regex): 按照参数的规则,将字符串切分成为若干部分。(注意:split方法的参数其实是一个正则表达式,当要按英文句点“.”进行切分,必须写成“\.”)

静态static关键字
(1)一旦用了static关键字,那么这样的内容不再属于对象自己,而是属于类的,所以凡是本类的对象,都共享同一份。一旦使用了static修饰成员方法,那么这就成为了静态方法,静态方法不属于对象,而是属于类的。
(2)如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。
(3)无论是成员变量,还是成员方法,如果有了static,都推荐使用类名称进行调用。(对于本类中的静态方法,可以省略类名称)
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
注意事项
(1)静态不能直接访问非静态。因为在内存中是先有的静态内容,后有的非静态内容。
(2)静态方法中不能使用this。因为this代表当前对象,通过谁调用的方法,谁就是当前对象。
(3)根据类名称访问静态成员变量的时候,全程和对象就没关系,只和类有关系。
静态代码块的格式:
public class 类名称{
static{
//静态代码块的内容
}
}
特点:当第一次用到本类时,静态代码块执行唯一的一次。静态内容总是优于非静态,所以静态代码块比构造方法先执行。
静态代码块 的典型用途:用来一次性的对静态成员变量赋值。

数组工具类Arrays
java.util.Arrays是一个与数组相关的工具类,里面提供了大量的静态方法,用来实现数组的常见操作。
public static String toString(数组): 将参数数组变成字符串(按照默认格式:[元素1,元素2,元素3…])
public static void sort(数组): 按照默认升序(从小到大)对数组的元素进行排序
注意事项:
(1)如果是数值,sort默认按照升序从小到大。
(2)如果是字符串,sort默认按照字母升序。
(3)如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持。

数学工具类Math
java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。
public static double abs(double num): 获取绝对值。有多种重载。
public static double ceil(double num): 向上取整。
public static double floor(double num): 向下取整。
public static long round(double num): 四舍五入。
Math.PI代表近似的圆周率常量(double)。

猜你喜欢

转载自blog.csdn.net/qq_36294338/article/details/110990778