一、类和对象
1、对象
现实世界中客观存在的任何事物都可以被看做对象,对象是用来描述客观事物的一个实体
2、对象的属性和方法
包括静态特征和动态特征
1)静态特征
静态特征也被称为属性,是可以用某些数据来描述的特征,如人的姓名,年龄等。
2)动态特征
动态特征也被称为方法,是对象所表现的行为或对象所具有的功能,如购物,收款等。
3、类
类是由一组具有相同属性和共同行为的实体抽象而来的,它是一种抽象的概念,类定义了对象将会拥有的特征(属性)和行为(方法)
4、类和对象的关系
类是对象的抽象,对象是类的具体
5、Java中的类模板
语法
public class <类名>{
//定义属性部分
属性1的数据类型 属性1;
属性2的数据类型 属性2;
..........
//定义方法部分
方法1;
方法2;
.........
}
类命名的规则
(1)不能使用java中任何的关键字。
(2)不能包含任何嵌入的空格或点号".",以及下划线"_",字符"$"外特殊字符。
(3)不能数字开头。
6、如何定义类
1)定义类名
通过定义类名,得到程序最外层的框架。
语法
public class 类名{
}
2)编写类的属性
通过在类的主体中定义变量来描述类所具有的属性,这些变量称为类的成员变量
语法
public class 类名{
数据类型 属性名;
}
3)编写类的方法
通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法
语法
访问修饰符 返回值类型 方法名(){
//方法体
}
//代码表示,方法名和返回值类型可自己定义
public void show(){
//方法体
}
7、如何创建和使用对象
创建对象语法
类名 对象名 = new 类名();
调用对象语法
引用需要用"."操作符
对象名.属性 //引用对象的属性
对象名.方法名(); //引用对象的方法
8、封装
封装就是把一个事物包装起来,并尽可能隐藏内部细节,对象具有封装性
9、面向对象的优点
·与人类的思维习惯一致
·信息隐藏,提高了程序的可维护性和安全性
·提高了程序的可重用性
二、类的无参方法
1、类的方法
类的方法是一个功能模块,类的方法定义了类某种行为(功能),类的每一个方法都实现了一个功能
2、如何定义类的方法
类的方法语法
public 返回值类型 方法名(){
//方法的主体
}
3、return的使用
方法执行后可能返回一个结果,该结果的类型称为返回值类型。
语法
return 表达式;
//返回值类型为什么类型,表达示就要为什么类型的值
return语句是跳转语句的一种,它主要做两件事
→ 跳出方法。意思是我已经完成了,要离开这个方法。
→ 给出结果。如果方法产生一个值,这个值放在return后面,即<表达式>部分,意思是离开方法,并将<表达式>的值返回给调用它的程序。
4、调用方法
语法
对象名.方法名();
5、变量的作用域
1)成员变量
在类中定义的变量称为类的成员变量
类的方法可以直接使用该类定义的成员变量。如果其他类的方法要访问它,必须首先创建该类的对象,然后才能通过操作符"."来引用
2)局部变量
在方法中定义的变量称为局部变量
它的作用域仅仅在定义该变量的方法内,因此只有在这个方法中能够使用。
3)使用成员变量和局部变量时注意事项
(1)作用域不同
(2)初始值不同
(3)在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量
(4)局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级
6、什么是JavaDoc注释
就是介绍该类,类的方法和成员变量的文档
语法
/**
*这是一个演示程序
*/
生成JavaDoc注释的方法
(1)使用命令行方式生成
(2)使用MyEclipse工具生成
三、类的带参数的方法
1、定义带参方法
语法
<访问修饰符> 返回值类型 <方法名>(<参数>){
//方法的主体
}
public class Shi1 {
String [] names = new String[5]; //学生姓名数组
public void addName(String name) { //有参方法,增加学生姓名
for(int i=0; i<names.length;i++) {
if(names[i] == null) {
names[i] = name;
break;
}
}
}
public void showNames() { //无参方法,显示全部学生姓名
for(int i=0; i<names.length; i++) {
System.out.println(names[i]);
}
}
}
注意事项:
(1)<访问修饰符>指该方法允许被访问的权限范围,只能是public、protectd或private。
(2)返回值类型指方法返回值的类型。如果方法不返回任何值,他应该声明为void类型。Java对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配。使用return语句返回值。
(3)<方法名>是定义的方法和名字,它应该使用合法的标识符。
(4)<参数列表>是传送给方法的参数列表。列表中各参数间以逗号分隔。
2、调用带参方法
在定义方法时把参数称为形参,在调用方法时把参数称为实参。
调用方法时,需要注意以下两点:
1> 先实例化对象,再调用方法
2> 实参的类型、数量、顺序都要与形参一一对应
语法
对象名.方法名(参数1,参数2,···,参数n);
import java.util.Scanner;
public class Shi2 {
public static void main(String[] args) {
Shi1 st = new Shi1();
Scanner in = new Scanner(System.in);
for(int i=0; i< st.names.length; i++) {
System.out.print("请输入学生姓名:");
String newName = in.next();
st.addName(newName); //调用方法并传实参
}
st .showNames(); //显示全部学生的姓名
}
}
3、深入理解带参方法
数组作为参数的方法
public class Test{
public static void main(String[] args) {
Demo st =new Demo();
int [] scores =new int[5]; //保存比赛成绩
Scanner input =new Scanner(System.in);
System.out.println("请输入五名参赛者的成绩:");
for (int i = 0; i < 5; i++) {
scores[i]=input.nextInt(); //传入实参
}
double avgScore=st.calAvg(scores); //调用方法并接收
System.out.println("平均成绩:"+avgScore);
}
}
对象作为参数的方法
语法
类名称 [ ]对象数组名= new 类名称[长度];
public class Stu{
String name;
int age;
int score;
public void showInfo() {
System.out.println(name+"\t"+age+"\t"+score);
}
}
public class Test{
Stu[] stu = new Stu[30];
public void addStudent(Student st) {
for (int i = 0; i < stu.length; i++) {
if(stu[i] == null) {
stu[i] = st;
break;
}
}
}
public void showStudents() {
System.out.println("本班学生列表:");
for (int i = 0; i < stu.length; i++) {
if(stu[i] != null) {
stu[i].showInfo();
}
System.out.println();
}
}
}
4、包
1)为什么需要包
<> 包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。
<> 防止命名冲突
<> 包允许在更广的范围内保护类、数据和方法,可以在包内定义类。根据规则,包外的代码有可能不能访问该类。
2)如何声明包
语法
package 包名;
注意事项:
<> Java包的名字通常由小写字母组成,不能以圆点开头或结尾。.
<> 一个唯一包名的前缀通常是全部小写的ASCII字母,并且是一个顶级域名com、edu、gov、net或org。通常使用知足的网络域名的逆序。
<> 包名的后续部分依不同机构各自内部的规范不同而不同。
3)如何导入包
语法
import 包名.类名;
import 包名.*;
package Ch014;
public class Shi7 {
public void showMessage() {
System.out.println("这是上海Acpp中心。");
}
}
package daoru; //声明包
import Ch014.Shi7; //导入包
public class Shi71 {
public static void main(String[] args) {
Shi7 center = new Shi7();
center.showMessage(); //使用AccpSchool类的方法
}
}
四、字符串
1、如何使用字符串
(1)定义并初始化字符串。
(2)使用字符串,对字符串进行一些处理。
语法
String s = "Hello World"; //创建对象
String s = new String(); //创建一个空字符串
2、字符串的长度
语法
字符串1.length();
import java.util.*;
public class Yx1 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String uname,pwd;
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码:");
pwd=input.next();
if(pwd.length()>=6) { //判断密码长度
System.out.print("注册成功! ");
}else{
System.out.print("用户名或密码不匹配,登录失败!");
}
}
}
3、字符串的比较
语法
字符串1.equals(字符串2);
在使用eruals()方法比较两个字符串时,它逐个对照组成两个字符串的每个字符是否相同。如果都相同,则返回true;否则返回false。对于字符的大小写,也在检查范围之内。
import java.util.*;
public class Yx2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String uname,pwd;
System.out.print("请输入用户名: ");
uname=input.next();
System.out.print("请输入密码:");
pwd=input.next();
if(uname.equals ("TOM") && pwd. equals("1234567")) {
System.out.print("登录成功! ");
}else{
System.out.print("用户名或密码不匹配,登录失败!");
}
}
}
忽略大小写的比较方法
语法
字符串1.equalsIgnoreCas(字符串2);
字符串.toLowerCase();
返回字符串的小写形式
字符串.toUppCase();
返回字符串的大写形式
4、复杂的字符串处理
1)字符串的连接
语法
字符串1.concat(字符串2);
String s = new String("你好");
String name = new String("张三");
String sentence = s.concat(name);
2)字符串的提取和查询
方法 | 说明 |
---|---|
public int indexOf(int ch) public int indexOf(String value) | 搜索第一个出现的字符或字符串 |
public int lastIndexOf(int ch) public int lastIndexOf(String value) | 搜索最后一个出现的字符或字符串 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex,int endindex) | 提取beginindex和endindex之间的字符串部分 |
public String trim()s | 返回一个前后不含任何空格的调用字符串的副本 |
示例:
import java.util.*;
public class Yx6 {
public static void main(String[] args){
boolean fileCorrect = false;
boolean emailCorrect = false;
System.out.println("----欢迎进入作业提交系统---- ");
Scanner input = new Scanner (System.in);
System.out.print("请输入Java文件名: ");
String fileName = input.next();
System.out.print("请输入你的邮箱:");
String email = input. next();
int index = fileName.lastIndexOf("."); //"."的位置
if (index!=-1 && index!=0 &&
fileName.substring (index+1,
fileName.length()).equals("java")){
fileCorrect = true; //标识文件名正确
}else{
System.out.println("文件名无效。");
}
if (email.indexOf('@')!=-1 &&
email.indexOf('.')>email.indexOf('@')){
emailCorrect = true; //标识E-mail正确
}else{
System.out.println("E-mail无效。");
}
if(fileCorrect && emailCorrect) {
System.out.println("作业提交成功");
}else {
System.out.println("作业提交失败");
}
}
}
3)字符串的拆分
语法
字符串1.split(String separator,int limit);
<> separator可选项,标识拆分字符串时使用一个或多个字符。如果不选择该项,则返回包含该字符串所有单个字符的元素数组。
<> limit可选项,该值用来限制返回数组中的元素个数。
示例:
public class Yx7 {
public static void main(String[] args) {
String words = "长亭外 古道边 芳草碧连天 晚风拂 柳笛声残 夕阳山外山";
String[] printword=new String[100];
System.out.println("***原歌词格式***\n"+words);
System.out.println("\n***拆分后歌词格式***");
printword=words.split(" "); //按照空格进行拆分
for(int i = 0;i<printword.length;i++) {
System.out.println(printword[i]); //打印输出
}
}
}
5、StringBuffer类
1)如何使用StringBuffer类
<> 声明StringBuffer对象并初始化
//声明一个空的StringBuffer对象
StringBuffer sb1 = new StringBuffer();
//声明一个字符串"青春无悔"
StringBuffer sb2 = new StringBuffer("青春无悔");
<> 使用StringBuffer对象
StringBuffer类提供了很多方法以供使用,调用时使用"."操作符完成。
2)常用的StringBuffer类方法
语法
<1>
字符串1.toString();
//该方法是将StringBuffer类型的字符串1转化为String类型的对象并返回。
示例:
String s1 = sb2.toString(); //转换String类
<2>
字符串1.append(字符串2);
//该方法为StringBuffer类的拼接,但是StringBuffer类的拼接可以将任何类型的值追加到字符串的后面,而String类只能追加String类型的。
示例:
public class Yx8 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("青春无悔");
int num=110;
//在字符串后面追加字符串
StringBuffer sb1 = sb.append("我心永恒");
System.out.println(sb1);
//在字符串后面追加字符
StringBuffer sb2 = sb1.append('啊');
System.out.println(sb2);
//在字符串后面追加整形数字
StringBuffer sb3 = sb2.append(num);
System.out.println(sb3);
}
}
<3>
字符串1.insert(位置,参数);
//将参数插入字符串1的指定位置(int 类型)后并返回。参数可以是包括String的任何类型。
示例:
import java.util.*;
public class Yx9 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//接收数字串,存放于StringBuffer类型的对象中
System.out.print("请输入一串数字:");
String nums = input.next();
StringBuffer str=new StringBuffer(nums);
//从后往前每隔三位数添加逗号
for(int i=str.length()-3;i>0;i=i-3) {
str.insert(i,',');
}
System.out.print(str);
}
}
3)StringBuffer操作字符串的方法常用的如下
<>转换成String类型:toString()
<>连接字符串:append()
<>插入字符串:insert()