第十一章 类和对象
1、对象
现实世界中客观存在的任何事物都可以被看作对象。对象可以是有形的,比如一辆汽车,它也可以是无形的,如一项计划。对象无处不在。
每个对象都有自己的特征,静态特征和动态特征,静态特征可以用数据类型来描述,比如名字,年龄,体重,动态特征是对象表现的行为或对象所具有的功能,如购物,收款。
对象 | 静态特征 | 静态特征的值 | 动态特征 |
---|---|---|---|
“顾客”对象张浩 | 姓名 | 张浩 | 购买商品 |
“顾客”对象张浩 | 年龄 | 20 | 购买商品 |
“顾客”对象张浩 | 体重 | 60kq | 购买商品 |
“收银员”对象李明 | 员工号 | 10001 | 收款打印账单 |
“收银员”对象李明 | 姓名 | 李明 | 收款打印账单 |
“收银员”对象李明 | 部门 | 财务部 | 收款打印账单 |
1、对象的属性和方法
对象拥有两个特征,一个静态特征,一个动态特征,在java代码中我们把静态特征称为属性,把动态方法称为方法,他们是构成对象的两个主要因素,属性是用来描述对象静态特征的一个数据项,数据项的值既属性值。
2、封装
就是把一个事物给包装起来,尽可能隐藏内部细节,如电脑就是一个对象,他的内部有主板、处理器、芯片、扇热器、显示器…等等。把这些对象组装起来就是一台电脑,电脑在放歌,在放电影,在进入游戏,这就是电脑的行为,也就是方法。
2、类
类有很多的类,比如动物类、植物类,食物类、汽车类等等等等,都是类,在这个些类里面,比如动物类,我看到一只狗,这只狗就是一个对象,是动物类的实体化,狗狗都有毛、颜色、名字、年龄、体重,这就是狗所拥有的的静态属性,所有的狗同时都有具备的,狗狗也有一些共同的行为(动态属性),如叫、吃、睡、玩等。类定义了对象将会拥有的特征(属性)和行为(方法)。
1类和对象的关系
比如说制作保温杯的模具,制作保温杯的模具是类,它定义了保温杯的大小,形状,模具做出来的不同大小不同形状的保温杯就是对象。所以就要用这个类创建出类的一个实例,既创建类的一个对象。类和对象的关系就同模具制作出物品之间的关系。
2、类是对象的类型
说到类型,有基本数据类型和引用数据类型,描述狗狗是什么类型呢,是字符还是字符串,其实都不是,狗狗的类型就是动物类,也就是说类就是对象的类型。
3、java是面向对象的语言
java的类模板:
public class <类名>{
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
.......
属性3的类型 属性3;
//定义方法部分
方法1;
方法2;
.......
方法3;
}
静态属性是写在类里面的好调用。类的命名也有规则1、不能使用java关键字。2、不能包含任何符号出下划线和美元符号外。3、不能以数字开头。其实跟变量名命名方法一样。
通过定义类名,得到程序最外层的框架,类定义了对象将会拥有的属性和方法。
public class 类名{
}
通过在类的主体中定义变量来描述所局有的静态特征(属性),这些变量称为类的成员变量。
public class Names {
String name; //姓名
int age; //年龄
char xin; //性别
//上面三个就是一个人的静态属性
public viud show(){
System.out.println("姓名:"+name+"\n年龄:"+age+"\n性别:"+xin);
//上面就是这个人的基本信息
System.out.println(name+"在跑步")
}
}
//下面是它的方法
public class Name{
public static void main(String [] agre) {
Names st = new Names();
st.name = "张三"
st.age = 17;
st.xin = '男';
st.show();
}
}
访问修饰符 返回值类型 方法名(){
//方法体
}
定义好了一个类,就可以根据定义的模板来创建对象了,类的作用就是创建对象。由类生成对象,称为类的实例化过程。一个实例也就是一个对象,一个类可以生成多个对象。创建对象的语法如下:
类名 对象名 = new 类名();
Names st = new Names();
有没有想起来还有一个地方也用了new,Scanner input = new Scanner (System.in);,导入包。
st对象的类型是Names类型。使用new创建对象时,我们并没有给它的数据成员赋一个特定的值。在java中,要引用对象的属性方法,需要使用"."操作符。对象名在圆点的左边,属性或方法的名称再远点的右边。
对象名.属性名 //引用对象的属性
对象名.方法名(); //引用对象的方法
//创建Names类的对象st后,就可以给对象的属性赋值或调用方法
st.name = "张三"; //给name属性赋值
st.show(); //调用show方法
类 型 | 默 认 值 |
---|---|
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
String | null |
第十二章 类的无参方法
4、类方法的概述
1、什么事类的方法
类是由一组具有相同属性的共同行为的实体抽象而来的。类的方法是一个功能模块,其作用是做一件事情。
2、如何定义类的方法
类的方法包括三个部分:
1、方法的名称
2、方法的返回值类型
3、方法的主体
public 返回值类型方法名(){
//方法的主体
}
第一步:定义方法名和返回值类型。
第二步:在{}中编写方法的主体部分。
注意:
方法放在一对大括号中,方法体就是一段程序代码,完成一定的工作。
方法名主要在调用这个方法时使用,采用驼峰命名法。
方法执行后可能会返回一个结果,该结果的类型为返回值类型,使用return语句返回。
return 表达式
//方法的返回值是什么类型就返回什么类型的值
return语句是跳转语句的一种,它主要做两件事。
1、跳出方法。意思是我已经完成了,要离开这个方法。
2、给出结果,如果方法产生一个值,这个值就放字return后面,就是表达式部分,意思是离开方法,并将表达式的值返回 给调用它的程序。
3、方法调用
对象名.方法名();
在类中,类的不同成员方法之间也可以进行相互调用。
第十四章 带参数的方法
5、带参方法
访问修饰符 返回值类型 方法名 (参数列表){
//方法的主体
}
public class StudentsBiz {
String[] names = new String[30]; //学生姓名数组
public void addName(String name) { //有参方法
//增加学生姓名
}
public void showNames() { //无参方法
//显示全部学生姓名
}
}
1、调用带参方法
对象名.方法名(参数1,参数2,参数3.......)
在定义方法和调用方法时,把参数分别称为形式参数和实际参数,简称形参和实参。形参是在定义方法时对参数的称呼,目的是定义方法需要传入的参数个数和类型。实参是在调用方法时传递个方法处理的实际的值。
注意:
1、先实例化对象。
2、实参的类型、数量、顺序都要与形参一一对应。
public class TestAdd {
public static void main(String[] args) {
StudentsBiz st = new StudentsBiz();
Scanner input = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.print("请输入学生姓名:");
String name = input.next();
st.addName(name); //调用方法并传实参
}
st.showNames(); //显示全部学生姓名
}
}
6、带多个参数的方法
public boolean searchName(int start,int end,String name) { //里面就有三个形参
boolean find = false;
return find;
}
方法searchName()带有三个参数,数据类型分别是int,int,String。调用该方法传递的实参s,e,name。de类型一一对应,并且searchName()方法定义返回值为boolean类型,return的find为boolean类型。参数无论多少,在使用时只要注意实参和形参一一对应:传递实参值与形参的数据类型相同,个数相同,顺序一致。就掌握了带参使用。
6、包
在生活中,保存文档是会经常使用文件夹,把不同类型归类,然后分放到不同的文件夹中,易与查找的管理。
声明一个包,只要包含一个package命令作为一个java源文件的第一条语句就可以。
package 包名; //语法
package是关键字。报的声明必须是java源文件中的第一条非注释性语句,而且一个源文件只有一个包声明语句。
java包的名字通常是由小写字母组成的,不能以圆点开或结尾。
第十五章 字符串
7、字符串概述
大家一定用过QQ邮箱,用户名和密码等都是使用的字符串,字符串是一系类字符组成的序列。
使用字符串分为两步:
1、定义并初始化字符串
2、使用字符串,对字符进行一些处理
String s = new String(); //空字符串
String s = "Hello World"; //字符串对象
如何获得字符串的长度、对两个字符串进行比较、连接两个字符串及提取一个字符串中的某一部分。
String类提供了length();的方法用来确定字符串的长度,及字符串中的字符数目。
字符串.length(); //返回字符的长度
public class Register {
public boolean verify(String name,String pwd1,String pwd2) { //形参
boolean lfag = false;
if(name.length()>=3&&pwd1.length()>=6){ //确定密码的长度
if( pwd1.equals(pwd2)) {
System.out.println("登录成功!");
lfag = true;
}else {
System.out.println("密码小于6位或两次密码输入错误!");
}
}else {
System.out.println("用户名小于三位数");
}
return lfag;
}
}
//下面是测试类
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Register st = new Register();
System.out.println("***欢迎进入注册系统***\n");
do {
System.out.print("请输入用户名:");
String name = input.next();
System.out.print("请输入密码:");
String pwd1 = input.next();
System.out.print("请再次输入密码:");
String pwd2 = input.next();
boolean cout = st.verify(name, pwd1, pwd2);
}while(true);
}
}
1、字符串的比较
不知道大家还记不记得以前有一次用过一次equals(),,没错这就是字符串比较的关键,他的意思是相等的,就是“等于”
在使用equals()把两个字符串进行比较,它一个个对照成两个字符串的每个字符是否相同。如果相同,则返回true,否则返回false。字符大小写要比较。
7、字符串
equals(); 比较字符串
toLowerCase(); 转换字符串中的英文字母为小写
toUpperCase(); 转换字符串中的英文字母为大写
8、方法
indexOf() 在字符串内搜索某个指定的字符或字符串,它返回出现第一个匹配字符的位置
lastlndexOf() 在字符串内搜索某个指定的字符或字符串,,但是它搜索的是最后一个出现的字符的位置
substring(int index) 提取从位置索引开始的字符串部分,调用时括号中写的是要提取的字符串的开始位置,方法的返回值就是要提取的字符串
substring(int beginindex,int endindex) 提取位置beginindex和位置endindex位置之间的字符串部分。
trim() 可以忽略字符串前后的空格
2、字符串的拆封分
字符串1.split(String separator,int limit); //拆分
separator 可选项,标识拆分字符串时使用一个或多个字符。如果不选择该项,则返回包含该字符串所有单个字符的元素数组
limint 可选项,该值用来限制返回数组中的元素个数
9、StringBuffer类
在娟中,处了使用String了存储字符串之外,还可以使用StringBuffer类存储字符串。StringBuffer也是java开发人员给我们提供的用于处理字符串的一个类,而且它是比String了更高效的存储字符串的一种引用数据类型。
StringBuffer类提供了很多方法以供使用,调用时使用"."操作符完成。
字符串1.toString(); 将StringBuffer类型的字符串1转换为String类型的对象并返回。
字符串1.insert(位置,参数); 将参数插入字符串1 的指位置(int 类型)后并返回。参数可以是包括String的任何类型。
Stirng类提供了大量的操作字符串的方法:
获取字符串长度:length();
比较字符串:equals();
连接字符串:concat();
提取字符串:substring();
搜索字符串:indexOf();
拆分字符串:split();
常营StringBuffer类提供的方法:
转换成String类型:toString();
连接字符串:append();
插入字符串:insert();