目录
一.面向对象思想
二.类和对象
三:定义类的步骤
四.创建对象
五.用Java代码写一个简单的登录系统
练习
六.关于类的方法
七.类的无参无返回值方法
八.方法的返回值
练习
关于方法调用问题
九.全局变量和局部变量
十.笔记
一.面向对象思想
-
就只关注参与这个事件的对象,不关心具体过程,具体过程打散到一个或者多个对象,在main函数中我们可以组合出具体过程。
二.类和对象
-
把具有相同属性和方法的对象归为一个类(class)。
-
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。
-
类不代表具体的事物,而对象表示具体的事物。(ps:对象是现实生活中看得见,摸的着的具体的事物)。
三:定义类的步骤
- 定义类名
- 编写类的属性
- 编写类的方法
练习:
编写一个表示小狗的简单类Dog——它表示的不是一只小狗,而是狗这个物种。
public class lian
//静态属性
String name;//名称
int age;//年龄
//动态属性 行为 方法
System.out.println("我的名字是"+name + ".我今年" + age+"岁了");
}
}
四.创建对象
- 语法
类名 对象名 = new 类名();
引用对象成员:使用"."进行以下操作
引用类的属性:对象名.属性
应用类的方法:对象名.方法名()
Dog dog = mew Dog();
dog.name = "小黑";
dog.age = 5;
dog.sayHello();
public class Dog {
//main函数是程序的入口函数
public static void main(String[] args) {
//在Java中新建一个狗狗对象
Dog dog = new Dog();
dog.name = "小黑";
dog.age = 5;
Dog dog2 = new Dog();
dog2.name = "小白"
dog2.age = 3;
dog1.sayHello();
dog2.sayHello();
}
}
练习
- 定义一个Car类,有品牌brand,颜色color,和价格price三个属性,有一个介绍自己的方法名称为show(),请使用程序定义该类,并创建一个对象。
public class color {
//品牌
String brand;
//颜色
String color;
//价格
int price;
//自我介绍的方法
public void show(){
System.out.println("汽车的品牌为:"+brand+",汽车的颜色为:"+color+",汽车的价格为:"+price);
}
}
五.用Java代码写一个简单的登录系统
- 首先定义一个User类存初始的用户名和密码
- 用户自定义的类也是一种类型(ps:不属于Java中的基本类型,属于引用类型)
package lian;
public class UserInfo {
String username;
String password;
}
- 在写一个面向的对象的登录页面
package lian;
import java.util.Scanner;
public class ren {
public static void main(String[] args) {
UserInfo[] users = new UserInfo[50];
UserInfo info = new UserInfo();
info.username = "li";
info.password = "666666";
users[0] = info;
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String uname = input.next();
System.out.println("请输入密码:");
String upwd = input.next();
boolean flag = false;//登录失败
//判定是否成功登录
for (int i = 0;i < users.length;i++){
if (users[i] != null && users[i].username.equals(uname) && users[i].password.equals(upwd)){
flag = true;
break;
}
}
if (flag == true){
System.out.println("登录成功");
}else {
System.out.println("登录失败");
}
}
}
练习
- 创建一个Movie类,有电影名称、导演、演员三个属性。写一个打印所有属性信息的方法。
先编写一个定义的类作为引用类型
package lian;
public class Movie {
String moviename;
String director;
String[] actors = new String[5];
public void initData(){
actors[0] = "张三";
actors[1] = "李四";
actors[2] = "王五";
actors[3] = "赵二";
actors[4] = "刘一";
}
//写一个介绍电影信息的方法
public void show(){
System.out.println("电影名称为:" + moviename);
System.out.println("电影导演为:" + director);
System.out.println("电影的参演人员有:");
//列举
for (int i = 0;i < actors.length;i++){
System.out.println(actors[i]);
}
}
}
再用一个main类打印输出
package lian;
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
Movie movie = new Movie();
movie.moviename = "人生";
movie.director = "李";
movie.initData();
//调用自我介绍的方法
movie.show();
}
}
ps:这样用的话作为引用类中的数组其实是有bug的,如果有两部电影调用演员,那么就会调用相同的演员数组。
可做如下更改:
- 首先在引用类型中注释掉
- 然后在主函数类中更改代码
package lian;
public class lian {
public static void main(String[] args) {
Movie movie = new Movie();
movie.moviename = "人生";
movie.director = "李";
movie.actors[0] = "张三";
movie.actors[1] = "李四";
movie.actors[2] = "王五";
movie.actors[3] = "赵二";
movie.actors[4] = "刘一";
//movie.initData();
//调用自我介绍的方法
movie.show();
System.out.println("------");
//创建第二部电影
Movie movie2 = new Movie();
movie2.moviename = "我的人生";
movie2.director = "人";
movie2.actors[0] = "为";
movie2.actors[1] = "国";
movie2.actors[2] = "家";
movie2.actors[3] = "谋";
movie2.actors[4] = "福";
movie2.show();
}
}
ps:这样一来就可以两个不同的电影有不同的演员。
六.关于类的方法
-
定义一个方法就是定义了一个功能。也就是类可以有什么能力,可以做到什么事情。
-
定义类方法的五要素:
-
访问修饰符
-
返回值类型
-
方法名
-
参数列表
-
方法体
ps:(图截取自视频老师讲解)
七.类的无参无返回值方法
package lian;
public class Dog {
public void run(){
System.out.println("小黑在跑");
}
public void bark(){
System.out.println("小黑在叫");
}
}
package lian;
public class dog2 {
public static void main(String[] args) {
Dog dog = new Dog();
dog.run();
dog.bark();
}
}
八.方法的返回值
-
如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型。
-
如果方法没有返回值,返回值的类型应为void(不能省略)。
练习
- 从键盘接收三门课分数,计算三门课的平均分和总成绩,编写成绩计算类实现功能。
先定义一个引用类型
package lian;
public class Calc {
int chinese;
int math;
int english;
public int getTotal () {
int totalScore = chinese + math + english;
return totalScore;
}
public double getAvgScore () {
//第一种求平均分的方法
// double result = (chinese + math + english) / 3.0;
// return result;
//第二种平均分的方法
return getTotal()/3.0;
}
}
再用一个main主函数类
package lian;
import java.util.Scanner;
public class kecheng2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Calc calc = new Calc();
System.out.println("请输入语文成绩:");
calc.chinese = input.nextInt();
System.out.println("请输入数学成绩:");
calc.math = input.nextInt();
System.out.println("请输入英语成绩:");
calc.english = input.nextInt();
int total = calc.getTotal();
//调用一下求平均分的方法
double avgScore = calc.getAvgScore();
String result = String.format("%.2f", avgScore);
System.out.println("总分为:"+total);
System.out.println("平均分为:"+result);
}
}
关于方法调用问题
-
如果两个方法不在同一个类中,我们先要实例化对象,然后再通过对象名.方法名()调度。
-
如果两个方法在同一个类中,那么我们直接通过方法名称调用即可。
九.全局变量和局部变量
- 变量声明的位置决定变量作用域
全局变量是指定义在任何函数之外的变量,也就是不被任何“{函数体}”所包含,作用域(有效范围)是从定义变量的位置开始到源文件(整个程序)结束。
全局变量是在类中定义的变量,它不属于任何一个方法。所有方法都可以共性(读取值,修改值),并且全局变量不赋初值,系统会给默认值。
全局变量特点:系统会给默认值。如果是整型,默认值为0。
局部变量是指在一个函数(包括main函数)内部定义的变量,它只在本函数内部有效,其他函数不能使用这些变量,函数的参数也就是局部变量。
局部变量:在方法中定义的变量,出了方法所在的{}它就死亡了。
十.笔记
package lian;
public class lian {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
if (str1 == str2) {
System.out.println("=");
}
}
}
ps:固定的两个格式(或者说两个静态的字符串)可以输出“=”,但不建议这样用,容易出问题。
package lian;
import java.util.Scanner;
public class lian {
public static void main(String[] args) {
String str1 = "abc";
Scanner input =new Scanner(System.in);
String str2 = input.next();
if (str1 == str2) {
System.out.println("=");
}
}
}
ps:这样用动态的Scanner输入方式后,结果就不是“=”了,这时的比较就要用equals了。equals既可以识别动态也可以识别静态,因此为了程序的健壮性我们最好引用equals。
- 在Java中判定一个对象是否为空用的是null。
- 在Java中判定两个字符串是否相等,用的是equals()。