JAVA
类和对象
定义: 是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为。
组成: 属性和行为
- 属性: 在类中通过成员变量来体现(类中方法外的变量)
- 行为: 在类中通过成员方法来体现(和前面的方法相比去掉
static
关键字即可)
定义步骤:
1.定义类
2.编写类的成员变量
3.编写类的成员方法
//手机
public class Phone{
//成员变量
String brand;//品牌
int price;//价格
//成员方法
public void call(){
System.out.println("打电话");
}
public void sendMessage(){
System.out.println("发短信");
}
}
对象的使用
1.创建对象
//类名 对象名 = new 类名();
Phone P = new Phone();
2.使用对象
使用成员变量
//对象名.变量名
P.brand;
使用成员方法
//对象名.方法名
P.call();
成员变量和局部变量
成员变量:类中方法外的变量。
局部变量:方法中的变量。
public class Student(){
String name;//成员变量
public void study(){
int i = 0;//局部变量
System.out.println("好好学习");
}
public void doHomework(){
System.out.println("多做练习");
int j = 0;
}
int age;
}
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中方法外 | 方法内或者方法声明上 |
内存中位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
初始化值不同 | 有默认初始值 | 没有默认初始值,必须先定义赋值,才能使用 |
private关键字
功能
- 权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 作用是保护成员不被别的类使用,被private修饰的成员只能在本类中才能访问
操作
若要被其他类使用,有以下操作。
- 提供
get变量名()
方法,用于获取成员变量的值,方法用public修饰 - 提供
set变量名(参数)
方法,用于设置成员变量的值,方法用public修饰
this关键字
this
修饰的变量用于指代成员变量
- 方法的形参如果与成员变量同名,不带
this
修饰的变量指的是形参,而不是成员变量 - 方法的形参没有与成员变量同名,不带
this
修饰的变量指的是成员变量
当局部变量和成员变量同名时,解决局部变量隐藏成员变量而使用this
封装
1.封装概述
面向对象三大特征:封装,继承,多态。
2.封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private
,提供对应的getXxx()
和setXxx()
方法。
3.封装好处
通过方法来控制成员变量的操作,提高了代码的安全性把代码用方法进行封装,提高了代码的复用性。
构造方法
主要完成对象数据的初始化
标准类的制作
API:应用程序编程接口。
JAVA API: 指的就是JDK中提供的各种功能的Java类这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即呵,我们可以通过帮助文档来学习这些AP|如何使用
String
JAVA程序中所有的双引号字符串,都是String类的对象。
从键盘输入字符串方法:
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String 构造方法
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] bys) | 根据字节数组的内容,来创建字符串对象 |
String s = "abc" | 直接赋值的方式创建字符串对象,内容就是abc |
直接赋值较好。
String对象的特点
1.通过new创建的字符串对象,每一次new都会申请一个内存空间, 虽然内容相同,但是地址值不同
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
上面的代码中,JVM会首先创建一个字符数组, 然后每一次new的时候都会有一 个新的地址, 只不过s1和s2参考的字符串内容是相同的
2.以""
方式给出的字符串, 只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立-一个String对象,并在字符串池中维护
String s3 = "abc";
String s4 = "abc";
在上面的代码中,针对第一行代码, JVM会建立一个String对象放在字符串池中,并给s3参考;第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象
字符串比较
1.使用==
作比较
- 基本类型:比较的是数据值是否相同。
- 引用类型:比较的是地址值是否相同。
2.字符串比较方法
public boolean equals(Object anObject)
:将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。
s1.equals(s2);//如此比较
遍历字符串
public char charAt(int index)
:返回索引处的char值,字符串的索引也是从0开始的
public int length()
:返回此字符串的长度
line.charAt(0);
line.length();
遍历方法
for(int i = 0;i<line.length;i++){
char ch = line.charAt(i);
}
StringBuilder
如果对字符串进行拼接操作,每次拼接,都会构建一个新的 String对象,既耗时,又浪费内存空间,而这种操作还不可避免。那么有没有-种比较好的方式可以解决这个问题呢?我们可以通过Java提供StringBuilder
类就来解决这个问题。
StringBuilder构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
StringBuilder的添加和反转
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
链式编程
sb.append("hello").append("world").append("java").append("100");
System.out.println(sb);
//helloworldjava100
StringBuilder和String相互转换
1.StringBuilder转换为String
调用toString()
的方法。
StringBuilder sb = new StringBuilder();
sb.append("hello");
String s = sb.toString();
2.String转换为StringBuilder
通过StringBuilder()
构造方法即可。
String s = "hello";
StringBuilder sb = new StringBuilder(s);
集合基础
个人理解该集合类似C语言的链表。
ArrayList
import java.util.ArrayList;//导包
ArrayList<E>;//E 指的是该集合中元素的类型
构造方法和添加方法
方法名 | 说明 |
---|---|
public ArrayList() | 创建一个空的集合对象 |
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
//创建一个空集合对象
ArrayList<String> array = new ArrayList<String>();
array.add("hello");
array.add("world");
//[hello,world]
array.add(1,javase);
//[hello,javaee,world]
常用方法
方法名 | 说明 |
---|---|
public boolean remove(Object o) | 删除指定元素,返回删除是否成功 |
public E remove(int index) | 删除指定索引处元素,返回被删除元素 |
public E set(int index,E element) | 修改指定索引处元素,返回被修改元素 |
public E get(int index) | 返回指定索引处元素 |
public int size() | 返回集合中元素的个数 |