栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础学习day8【谷】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础学习day8【谷】

Java基础学习day8【谷】 学习面向对象的主线
  • Java类及类的成员:属性、方法、构造器 、代码块、内部类
  • 面向对象三大特征:封装 继承 多态 (抽象性)
  • 其他关键字:this super static final abstract interface package import
“大处着眼,小处着手” 面向对象的两个要素 类与对象

类:对一类事物的描述,是抽象的、概念上的定义
对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)

设计类,其实就是设计类的成员

属性=成员变量=field=域、字段

方法=成员方法=函数=method

创建类的对象=类的实例化=实例化

二、类和对象的使用(面向对象思想落地的实现):
1,创建类,设计类的成员
2.创建类的对象
3通过“对象.属性”或“对象.方法”调用对象的结构

注意不要将两类造成包含关系

public class ClassDemo {
    public static void main(String[] args) {
        //类的实例化
        Person person = new Person();
        //调用对象的属性和方法
        person.name = "有道";
        System.out.println(person.getName());
        person.say("鸟语");
        person.hello();
        person.age = 500;
        System.out.println(person.age);
    }
}

class Person {
    //属性
    int age;
    String name;
    boolean isMale;

    //方法
    public void hello() {
        System.out.println("你好,有道君");
    }

    public String getName() {
        return this.name;
    }

三、如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)
意味着:如果我们修改一个对象的属性,则不影响另外一个对象属性a的值。

对象的内存解析

属性vs局部变量 相同点
  • 定义变量的格式:数据类型 变量名=变量值
  • 先声明,后调用
  • 变量都有其对应的作用域
不同点
  • 在类中声明的位置不同

    • 属性:直接定义在一对{}内
    • 局部变量:声明在方法内、方法形参、代码块、构造形参、构造器内部变量
  • 关于权限修饰符的不同

    • 属性

      • 可以在声明属性时,指明其权限,使用权限修饰符
      • 常用的权限修饰符:private public 缺省 protected —>封装性
      • 目前大家声明变量时候使用缺省就可以了
    • 局部变量

      • 不可以使用修饰符
  • 默认初始化值的情况

    • 属性

      • 类的属性,根据其类型,都有默认的初始化值

        整型(byte short int long ) 0

        浮点型(float double) 0.0

        字符型(char)0

        布尔型(boolean) false

        引用数据类型(类 数组 接口)

    • 局部变量

      • 没有默认的初始化值

        意味着,我们在调用局部变量前,一定要显性赋值

        特别的:形参在调用时,我们赋值即可

  • 在内存中的加载

    • 属性
      • 放在堆内存中
    • 局部变量
      • 放在栈内存中
局部变量都放在栈内存中 类种方法的声明

方法:描述类应该具有的功能

比如:Math类:sqrt()random()…

​ Scanner类:next()nextXxx()

​ Array类:sort()binarySearch()…

1.举例:
public void eat(){}
public void sleep(int hour){}
public string getName(){}
public string getNation(string nation){}
2.方法的声明:权限修饰符返回值类型方法名(形参列表){
方法体

}

注意:static、final、abstract来修饰的方法,后面再讲。
说明:

  1. Java规定的4种权限修饰符:private、public、缺省、protected–>封装性再来叙述

  2. 返回值类型:有返回值VS没有返回值

    • 如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量:“return数据”。

    • 如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不使用return.但是,如果使用的话,只能“return;”表示结束此方法的意思。

    • 我们定义方法该不该有返回值?
      ①题目要求
      ②凭经验:具体问颗具体分析

  3. 方法名:属于标识符,遵循标识符的规则和规范,“见名知意”

  4. 形参列表:方法可以声明0个,1个,或多个形参。

    1. 格式:数据类型1 形参1,数据类型2 形参2,···
    2. 我们定义方法时,该不该定义形参?
      ①题目要求
      ②凭经验:具体问题具体分析
  5. 方法体:方法功能的提现

  6. return关键字的使用:

    1. 使用范围:使用在方法体中
    2. 作用:

    ①结束方法
    ②针对于有返回值类型的方法,使用"return数据"方法返回所要的数据

  7. 方法的使用中,可以调用当前类的属性或方法
    特殊的:方法A中又调用了方法A:递归方法。
    方法中,不可以定义方法!!!

练习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9W3iFf9-1657639604746)(https://cdn.jsdelivr.net/gh/gaoyoudao/Picture/img/image-20220712220116308.png)]

public class Demo {
    public static void main(String[] args) {
        Person1 person = new Person1();
        person.age=18;
        person.study();
        person.addAge(2);
        person.showAge();
        Person1 person1 = new Person1();
        person1.showAge();
        person1.addAge(2);
        person1.showAge();
        person.showAge();

    }
}
class Person1{
    String name;
    int age;
    int sex;
    public void study(){
        System.out.println("studying");
    }
    public void showAge(){
        System.out.println(age);
    }
    public int addAge(int i){
        age+=i;
        return age;
    }
}

2.利用面向对象的编程方法,设计类Circle计算圆的面积

package com.youdao.java;

public class Circle {
    double r=0.0;
    public double area(){
        return Math.PI*r*r;
    }
    
}
package com.youdao.java;

import java.util.Scanner;

public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Circle circle= new Circle();
        circle.r=scanner.nextDouble();
        System.out.println(circle.area());
    }

}

3.对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int),创建20个学生对象,学号为1到20,年级和成绩都由随机数确定,
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
提示:
1)生成随机数:Math.random(),返回值类型double;
2)四舍五入取整:Math.round(double d),返回值类型Iong.

public class Student {
    //学号
    int number;
    //成绩
    int score;
    //年级
    int state;

    @Override
    public String toString() {
        return "Student{" +
                "number=" + number +
                ", score=" + score +
                ", state=" + state +
                '}';
    }
}
public class Test {
    public static void main(String[] args) {
        Student[] students = new Student[20];
        for (int i = 0; i < students.length; i++) {
            students[i] = new Student();
            students[i].number = i + 1;
            students[i].score = (int) Math.round((Math.random() * (99 - 0 + 1) + 0));
            students[i].state = (int) Math.round((Math.random() * (10 - 1 + 1) + 1));
        }
        Test test=new Test();
        test.selectAll(students);
        System.out.println("*********************************************");
        test.selectByState(students,3);
        System.out.println("*********************************************");
        test.selectAll(test.sort(students));



    }

    
    public void selectAll(Student[] students) {
        for (int i = 0; i < students.length; i++) {
            System.out.println(students[i].toString());
        }
    }

    
    public void selectByState(Student[] students, int state) {
        for (int i = 0; i < students.length; i++) {
            if (students[i].state == state) {
                System.out.println(students[i].toString());
            }
        }
    }

    public Student[] sort(Student[] students){
        for (int i = 0; i < students.length - 1; i++) {
            for (int j = 0; j < students.length - 1 - i; j++) {
                if (students[j].score > students[j + 1].score) {
                    int temp = students[j].score;
                    students[j].score = students[j + 1].score;
                    students[j + 1].score = temp;
                }
            }
        }
        return students;
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014421.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号