类和对象
一、对象
Java是一种面向对象的编程语言,在面向对象中,对象是用来描述客观事物的一个实体。当提到某一个分类时,就可以找到属于该分类的一个具体的事物。不同类别中的对象具有不同的静态特征和动态特征。
1.静态特征
静态特征是可以用某些数据来描述的特征。
2.动态特征
动态特征是对象所表现的行为或对象所具有的功能。
3.属性和方法
把对象的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素。其中属性是用来描述对象静态特征的一个数据项,该数据项的值即属性值;而方法是用来描述对象动态特征(行为)的一个动作序列。
在编程中,对象的属性被存储在一些变量里,对象的行为则通过定义方法来实现。
4.封装
封装就是把一个事物包装起来,并尽可能隐藏内部细节。对象的属性和方法是相辅相成,不可分割的,它们共同组成了实体对象。因此,对象具有封装性。
二、类
类定义了对象将会拥有的特征(属性)和行为(方法)。
1.类和对象的关系和类型
一个类为它的全部对象给出了一个统一的定义,而它的每个对象则是符合这种定义的一个实体。因此类和对象的关系就是抽象和具体的关系。类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。
事实上,定义类就是抽取同类实体的共性自定义的一种数据类型。
2.使用类的步骤
a.定义类:使用关键字class。
b.创建类的对象:使用关键字new。
c.使用类的属性和方法:使用“.”操作符。
三、Java是面向对象的语言
1.类的模板
语法:
public class 类名{
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
……
属性n的类型 属性n;
//定义方法部分
方法1;
方法2;
……
方法n;
}
在java中要创建一个类,需要使用一个class,一个类名和一对大括号。其中,class是创建类的关键字。在class前有一个public,表示“公有”。
2.定义类
通过在类的主体中定义变量来描述类所具有的静态特征(属性),这些变量称为类的成员变量。
通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法。
语法
public class 类名{
}
方法的基本框架
访问修饰符 返回值类型 方法名(){
//方法体
}
访问修饰符限制了访问该方法的范围,返回值类型是方法执行后返回结果的类型,这个类型可以是基本类型,或者是引用类型,也可以没有返回值,此时必须使用void来描述。
3.创建和使用对象
类的作用就是创建对象。由类生成对象,称为类的实例化过程。一个实例也就是一个对象,一个类可以生成多个对象。
语法
类名 对象名 = new 类名();
在引用对象的属性和方法,需要使用“.”操作符。对象名在圆点的左边,属性或方法的名称在圆点的右边。
语法
对象名.属性
对象名.方法名()
main()方法是程序的入口,但是一个java类中只有一个main()方法。
Java数据类型的默认值
类型 | 默认值 |
---|---|
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
String | null |
4.面向对象的优点
a.与人类的思维习惯一致:面向对象的思维方式从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程。
b.信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,将类的属性和行为封装在类中,修改不会影响到其他对象,有利于维护。对象外部不能随意访问对象的属性和方法,避免外部错误对它的影响,提高了安全性。
c.提高了程序的可重用性:一个类可以创建多个对象实例,增加了重用性。
类的无参方法
一、定义类的方法
类的方法必须包括以下三个部分:
a.方法的名称
b.方法的返回值类型
c.方法的主体
语法
public 返回值类型方法名(){
//方法的主体
}
在编写方法时,分两步完成。
第一步:定义方法名和返回值类型。
第二步:在{}中编写方法的主体部分。
注意以下三点:
第一点:方法体放在一对大括号中。方法体就是一段程序代码,完成一定的工作。
第二点:方法名主要在调用这个方法时使用。在java中采用驼峰命名法。
第三点:方法执行后可能会返回一个结果,结果类型称为返回值类型。使用return语句返回值。
语法
return 表达式;
return是跳转语句的一种,主要做两件事。
第一种:跳出方法
第二种:给出结果。如果方法产生一个值,这个值放在return后面。
二、方法调用
在程序中通过使用方法名称从而执行方法中包含的语句,这一过程就称为方法调用。java中类是程序的基本单元。类的不同成员方法之间也可以进行相互通用。
语法
对象名.方法名();
调用时仅仅使用成员方法的名称,凡涉及类的方法的调用,均使用如下两种形式。
第一种:同一个类中的方法,直接使用方法名调用该方法。
第二种:不同类的方法,首先创建对象,再使用“对象名.方法名()”来调用。
三、变量的作用域
Java中以类来组织程序,类中可以定义变量和方法,在类的方法中,同样也可以定义变量。
1.成员变量和局部变量
在使用时,成员变量和方法的局部变量具有不同的使用权限。
成员变量:AutoLion类的方法可以直接使用该类定义的成员变量。如果其他类想访问它,必须首先创建该类的对象,然后才能通过操作符“.”来引用。
局部变量:它的作用域仅仅在定义该变量的方法中。
使用时需注意:
a.作用域不同。局部变量的作用域仅限于定义它的方法,在该方法外无法访问。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用,如果访问权限允许,还可以在类外部使用成员变量。
b.初始值不同。对于成员变量,如果在类定义中没有给它赋初始值,java会给他一个默认值基本数据类型的值为0,引用类型的值为null。但是java不会给局部变量赋初始值,因此局部变量必须要定义赋值后再使用。
c.同一方法中,不允许有同名的局部变量。不同方法中,可以有同名的局部变量。
b.局部变量可以和成员变量同名,使用时,局部变量具有更高的优先性。
四、常见错误
常见错误1
public class Student{
public void showInfo(){
return"我是一名学生";
}
}
原因分析:方法的返回值类型为void,方法中不能有return语句。
常见错误2
public class Student{
public double getInfo(){
double weight = 95.5;
double height = 1.69;
return weight,height;
}
}
原因分析:方法不能返回多个值。
常见错误3
public class Student{
public double showInfo(){
return"我是一名学生";
public double getInfo(){
double weight = 95.5;
double height = 1.69;
return weight,height;
}
}
}
原因分析:多个方法不能相互嵌套定义。
常见错误4
public class Student{
int age = 20;
if(age<20){
System.out.println("年龄不符合入学要求!");
}
public void showInfo(){
System.out.pprintln("我是一名学生");
}
}
原因分析:不能在方法外部直接写程序逻辑代码。
常见错误5
public class Student{
int score1 = 88;
int score2 = 98;
public void calcAvg(){
int avg = (score1 + score2)/2;
}
public void showAvg(){
System.out.println("平均分是:"+avg);
}
}
原因分析:编译器报错“无法解析avg”,要编写带有返回值的方法,然后调用这个方法,而不是直接使用。
常见错误6
public class x{
public static void main(String[] args){
for(int a = 0;a<4;a++){
System.out.println("H");
}
System.out.println(a);
}
}
原因分析:变量a 在for循环里,只能在for循环里使用,一旦退出循环,就不能使用变量a。
五、面向对象编程
面向对象编程是一种计算机编程架构,OOP的一条基本原则就是计算机是由单个能够起到子程序作用的单元或对象组合而成的,主要起到重用性、灵活性和扩展性的强大作用。
**面向对象编程好处:**类的方法可以实现某个特定的功能,其他的类不需要知道它是如何实现的。知道实现此功能的类和它的方法名,就可以直接调用,而不用重复编码。
六、JavaDoc注释
1.什么是JavaDoc注释
JavaDoc是前Sun公司提供的一种技术,它能够从程序源代码中抽取类、方法、成员等的注释,形成一个和源代码配套的API帮助文档。
基本格式
/**
*AccpSchool类
*@author
*@version
*/
带参数的方法
一、带参方法
1.定义带参方法
方法中某种功能的实现依赖于我们给它的初始信息,这时候在定义方法时就需要在括号中加入参数列表。
语法
<访问修饰符>返回值类型<方法名>(<参数列表>){
//方法的主体
}
类中的属性可以是单个变量,也可以是一个数组,可以通过运算符“.”访问类的数组成员或数组成员的元素。
2.调用带参方法
调用带参方法与调用无参方法的语法相同,但是在调用带参方法时必须传入实际的参数的值。在使用时,传递的实参值与形参的数据类型相同,个数相同,顺序一致。
语法
对象名.方法名(参数1,参数2,···,参数n)
在定义方法和调用方法时,把参数分别称为形式参数和实际参数,简称形参和实参。形参是在定义方法时对参数的称呼,目的是定义方法需要传入的参数个数和类型。实参是在调用方法时传递给方法处理的实际的值。
调用时,需注意一下两点。
第一点:先实例化对象,再调用方法。
第二点:实参的类型,数量,顺序都要与形参一一对应。
二、包
1.为什么需要包
Java用包来管理类。类似于文件存储在文件夹中,java的类文件可以存储在不同的包中。
包主要在以下三个方面的作用:
a.包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。
b.防止命名冲突:java只有在不同的包中的类才能重名。
c.包允许在更广的范围内保护类,数据和方法,可以在包内定义类。根据规则,包外的代码有可能不能访问该类。
2.声明包
要声明一个包(package),只要包含一个package命令作为一个java源文件的第一条语句就可以。
语法
package 包名;
package是关键字。包的声明必须是Java源文件中的第一条非注释性语句,而且一个源文件只能有一个包声明语句。
3.如何导包
使用import导包,即“包名.类名”,来导入包中的某个特定的类。
语法
import 包名.类名;
在使用import时,也可以使用“包名.*”。
语法
import 包名.*;
字符串
一、字符串的概述
1.如何使用字符串
使用字符串分两步。
第一步:定义并初始化字符串。
第二点:使用字符串,对字符串进行一些处理。
语法
//创建一个字符串对象"Hello World"
String s = "Hello World";
在java中,字符串被作为String类型的对象来处理。String类是java设计人员预先提供的一个非常有用的类,它位于java .lang包中,默认情况下,该包被自动导入 所有的程序。
2.字符串的长度
String类提供了length()方法。字符串是一串字符序列,String类的length()方法用来确定字符串的长度,即字符串中的字符数目。调用length()方法返回的结果就是字符串中的字符数。
语法
字符串 1.length();
3.字符串的比较
在使用equals()方法比较两个字符串时,它逐个对照组成两个字符串的每个字符是否相同。如果都相同,则返回true,否则返回false。
语法
字符串 1.equals(字符串2);
双等号和equals()的区别
双等号(==)判断的是两个字符串对象在内存中的首地址是否相等,即判断是否是同一个字符串对象,而equals()判断的是两个字符串对象的值是否相等。
改变字符串的大小写
toLowerCase():转换字符串中的英文字母为小写
字符串.toLowerCase()
toUpperCase():转换字符串中的英文字母为大写
字符串.toUpperCase()
二、复杂字符串处理
1.字符串的连接
连接运算符可以使用“+”,除此之外,在java中,String类也提供了另一个方法concat(),将一个字符串连接到另一个字符串的后面。
语法
字符串1.concat(字符串 2);
2.字符串的提取和查询
a. indexOf()方法
该方法是在字符串内搜索某个指定的字符或字符串,它返回出现第一个匹配字符的位置。
b. lastlndexOf()方法
该方法也是在字符内搜索某个指定的字符或字符串,但是它是搜索最后一个出现的字符(或字符串)的位置。
c. substring(int index)方法
该方法用于提取从位置索引开始的字符串部分,调用时括号中写的是要提取的字符串的开始位置,方法的返回值就是要提取的字符串。
d. substring(int beginindex , int endindex)方法
该方法用于提取位置 beginindex和位置 endindex位置之间的字符串部分。开始位置 beginindex,java 是基于字符串为0来进行处理的,终止位置 endindex,java 是基于字符串的首字符为1来处理。
e. trim()方法
该方法可以忽略字符串前后的空格,一般会调用trim()方法过滤掉字符串前后的多余空格。
3.字符串的拆分
Java的String类提供了一个拆分字符串的方法split(),将一个字符串分割为子字符串,结果作为字符串数组返回。
字符串 1.split(String separator,int limit)
a. separator 可选项,标识拆分字符串是使用一个或多个字符。如果不选择该项,则返回包含该字符串所有单个字符的元素数组。
b. limit可选项,该值用来限制返回数组中的元素个数。
三、StringBuffer类
在java中,除String类存储字符串之外,还可以使用StringBuffer类存储字符串。它是比String类更高效的存储字符串的一种引用数据类型。
1.如何使用StringBuffer类
a. 声明StringBuffer 对象并初始化
b. 使用StringBuffer 对象
2.常用StringBuffer类方法
字符串 1.toString();
字符串 1.append(字符串2);
字符串 1.insert(位置,参数);