目录
1.类和对象
1.1什么是对象
万物皆对象,客观存在的事物皆对象
1.2什么是类
类是对现实生活中一类具有相同属性和行为的事物的抽象
1.3什么是对象的属性
属性:对象具有的各种特征,,每个对象的每个属性都拥有特定的值
1.4什么是对象的行为
行为:对象能够执行的操作
1.5类和对象的关系
类是对象的抽象,对象是类的实体
1.6类的定义
类的重要性:是java程序的基本组成单位
类是什么:是对现实生活中一类具有共同属性和行为的事物的抽象,确定对象将会拥有的属性和行为
类的组成:
- 属性:在类中通过成员变量来实现(类中方法外的变量)
- 行为:在类中通过成员方法来实现,(和前面的方法相比去掉static关键字即可)
类的定义:
public class 类名{
//成员变量
变量1的数据类型 变量一;
变量2的数据类型 变量二;
.....
//成员方法
方法1;
方法2;
.....
}
1.7对象的使用
创建对象:
- 格式:类名 对象名=new 类名()
- 范例:phone p=new phone()
使用对象:
- 使用成员变量:对象名.变量名;
- 使用成员方法:对象名.方法名();
2.成员变量和局部变量
2.1什么是成员变量和局部变量
成员变量:类中方法外的变量
局部变量:方法中的变量
2.2成员变量和局部变量的区别
3.封装
3.1private关键字
- 是一个权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
- 提供“get 变量名()”方法,用于获取成员变量的值,方法用public修饰
- 提供“set 变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
3.2this关键字
3.3封装
1、封装概述
是面向对象三大特征之一(封装、继承、多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
2、封装原则
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的get方法和set方法
3、封装好处
通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码的复用性
4.构造方法
4.1构造方法概述
构造方法是一种特殊的方法,作用:创建对象
格式: public class 类名{ 修饰符 类名(参数){ } }
功能:主要是完成对象数据的初始化
4.2构造方法的注意事项
1、构造方法的创建
- 如果没有定义构造方法,系统将给出一个默认的无参构造方法
- 如果定义了构造方法,系统将不再提供默认的构造方法
2、构造方法的重载
- 如果定义了带参构造方法,还要使用无参构造方法,就必须自己写一个重载的无参构造方法
3、推荐的使用方式
- 无论是否使用,都手工书写无参构造方法
5.API
5.1API概述
API:应用程序编程接口
java API:指的是jdk中提供的各种功能的java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何和实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
6.String
6.1String概述
String在java.lang包下,所以使用的时候不用导包
String类代表字符串,java语言中所有的字符串文字都被实现为此类的实例,也就是说,java程序中所有的双引号字符串,都是String类的对象
字符串的特点:
- 字符串不可变,它们的值被创建后不能被更改
- 虽然String的值是不可变的,但是他们可以被共享
- 字符串效果上相当于字符数组(char []),但是底层原理是字节数组(byte[])
6.2String对象的特点
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对象,也就是说它们本质上是一个对象
6.3字符串比较
使用==做比较
- 基本类型:计较的是数据值是否相同
- 引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
public class compare{
public static void main(String[] args){
//构造方法的方式得到对象
char[] chs={'a','b','c'};
String s1=new String(chs);
String s2=new String(chs);
//直接赋值的方式得到对象
String s3="abc";
String s4="abc";
//比较字符串对象地址是否相同
System.out.println(s1==s2);//不同
System.out.println(s1==s3);//不同
System.out.println(s3==s4);//相同
System.out.println(------);
//比较字符串内容是否相同
System.out.println(s1.equals(s2));//相同
System.out.println(s1.equals(s3));//相同
System.out.println(s3.equals(s4));//相同
}
}
6.4遍历字符串
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
- public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的
- 数组的长度:数组名.length
- 字符串的长度:字符串对象.length()
import java.util.scanner
public class Stringtest{
public static void main(String[] args){
//键盘录入一个字符串,用scanner实现
Scanner.sc=new scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextline();
//遍历字符串,首先要能够获取到字符串中的每一个字符
for(int i=o;i<line.length();i++){
System.out.println(line.charAt(i));
}
}
}
7.StringBuilder
7.1StringBuilder概述
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是String Builder对象中的内容是可变的
String和StringBuilder的区别:
- String:内容是不可变的
- StringBuilder:内容是可变的
7.2StringBuilder构造方法
String Builder s1=new String Builder();
String Builder s2=new String Builder("hello");
7.3StringBuilder的添加和反转方法
append:
StringBuilder s3=new StringBuilder();
s3.append("hello")
s3.append("world")
等价于s3.append("hello").append("world");
reverse:
StringBuilder s4=new StringBuilder("hello world");
s4.reverse();//此时s4的值为dlrow olleh
7.4StringBuilder 和String 相互转化
通过StringBuilder 的toString方法将StringBuilder 转化为String :
StringBuilder sb=new StringBuilder();
sb.append("hello");
String s=sb.toString();
通过StringBuilder的构造方法将String 转化为StringBuilder :
String s="hello";
StringBuilder sb=new StringBuilder(s);