java学习之二(方法,面向对象基础)

方法

  • 简单的方法

  • 方法的好处

    • 提高代码的复用性
  • 方法的概述:

    • 方法是实现特定功能的代码块
    •  一段具有独立功能的代码块,需要先定义才能调用
    • 如果没有调用,方法不会自动运行
  • 方法定义格式:

    •  public static void 方法名(){  方法体  }

  •     方法调用格式:

    • 方法名();

    方法与方法之间的关系:
        平级关系,所以不能嵌套定义

package ithema.day01;
public class Demo01 {
    public static void main(String[] args) {
        //调用方法
        eat();

        //调用方法
        study();

    }
    //定义方法
    public static void study(){
        System.out.println("学生在敲代码");
    }
    //定义方法
    public static void eat(){
        System.out.println("学生在吃饭");
    }
}

练习1

package ithema.day01;
/*
* 案例:方法练习(输出最大值)
*       定义方法,方法中定义两个变量,判断较大值并比较
*       调用方法查看结果
*
* */

public class Demo02 {
    public static void main(String[] args) {
        getMax();
    }
    public static void getMax(){
        int a=10;
        int b=20;
        if(a>b){
            System.out.println("max:"+a);
        }else if(b>a){
            System.out.println("max:"+b);
        }else{
            System.out.println("相等");
        }
    }
}

  • 含参数的方法

package ithema.day01;
/*
* 案例:方法练习(输出最大值)
*       定义方法,方法中定义两个变量,判断较大值并比较
*       调用方法查看结果
*
* */

public class Demo02 {
    public static void main(String[] args) {
        getMax(10,20);
        getMax(100,20);
    }
    public static void getMax(int a, int b){
//        int a=10;
//        int b=20;
        if(a>b){
            System.out.println("max:"+a);
        }else if(b>a){
            System.out.println("max:"+b);
        }else{
            System.out.println("相等");
        }
    }
}
  • 形参和实参

形参:方法定义中的参数,作用是接收实参

实参:方法调用中的参数,本质是参与操作的数据

练习A

package ithema.day01;

import java.util.Scanner;

/*
* 需求:
*       定义方法,接受三个整数,获取中间值并打印
*       通过键盘录入三个整数,作为参数传递,调用方法查看结果
*
* */
public class A {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        getMid(a, b, c);
    }
    //1.定义方法
    public static void getMid(int a, int b, int c){
        //2.获取接受的是哪个整数中间值,并打印
        //三元运算符
        //先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1的值,否则就是表达式2的值。
        //因为肯定会有一个结果。所以我们在使用的时候需要把这个结果使用(用变量保存,打印等)起来。不然就没有意义。
        int max = (a>b?a:b) >c ? (a>b?a:b):c;
        int min =(a<b?a:b) < c ? (a<b?a:b):c;
        int mid =(a+b+c)-(max + min );
        System.out.println("中间值"+mid);
    }
}



  • 带返回值的方法的定义和调用

方法定义

  • 格式

        public static 数据类型 方法名(参数){return 数据;}

  • 范例1

        public static boolean isEvenNumber(int number){return ture;}

  • 范例2

        publliic static int getMax(int a,int b){return 100;}

  • 注意

方法定义时return后面的返回值与方法定义上的数据类型必须要匹配,否则程序将报错

package ithema.day01;

public class Demo03 {
    public static void main(String[] args) {
        boolean flag =isEvenNumber(10);
        System.out.println(flag);
    }
    public static boolean isEvenNumber(int number) {
        if (number % 2 == 0) {
            return true;
        }else{
            return false;
        }
    }

}

优化练习1

public class Demo02 {
    public static void main(String[] args) {
        int max = getMax(10,20);
        System.out.println(max);
    }
    public static int getMax(int a, int b){ //void代表返回值为空

//        int a=10;
//        int b=20;
        if(a>b){
            return a;
        }else{
            return b;
        }
    }
}
  • 注意事项

b0d93f8704ad46ef9cd16f8ea21241f1.png

  • 方法通用格式

方法重载

160a4c3766bf450b8c746abb205dc47b.png

面向对象基础

  • 面向对象概述

        类是对象的抽象,对象是类的实体

  • 类和对象

    • 类:是对一类具有共同属性和行为事物的描述

    1. 属性->成员变量
    2. 行为->成员方法
    • 对象 :根据类创建出的多个实体 

    • 对象的内存图

    1. 栈内存:方法调用进栈执行
    2. 堆内存:new出来的东西都进堆,进堆就会开辟空间产生地址值
    • 成员变量和局部变量的区别

    1. 类中位置不同 :成员变量在类中方法外,局部变量在方法中(包括形参)
    2. 内存中的位置不同:局部变量进入栈内存,成员变量进入堆内存
    3. 生命周期不同:局部便跟随方法的调用存在,随着方法弹栈(出栈)而消失;成员变量根据对象的创建而存在,随着对象消失而消失
    4. 初始化值不同 :成员变量有默认初始值(null,0,0.0),局部变量没有
    • 类的定义

    • dab4728ebe90437cb2fc09917d3bb5a8.png
    • package ithema.day02;
      /*
          创建对象
              格式:类名 对象名 = new 类名
              范例:Phone P =new Phone();
          使用对象
              1:使用成员变量
                  格式:对象名.变量名
                  范例:p.brand
              2.使用成员方法
                  格式:对象名.方法名(参数)
                  范例:p.call()
       */
      
      public class PhoneDemo {
          public static void main(String[] args) {
              Phone p = new Phone();
      
              p.brand ="小米";
              p.price=1999;
              p.color ="白";
             /* System.out.println(p.brand);
              System.out.println(p.price);
              System.out.println(p.color);*/
      
              p.show();
              p.call();
              p.sendMessage();
      
      
          }
      }
      

  • 封装

    • private关键字

        

package ithema.day02;

public class StudentTest {
    public static void main(String[] args) {
        //创建对象
        Student s1 = new Student();

        //赋值
        s1.setName("张三");
        s1.setAge(18);

        //取值
        System.out.println(s1.getName());
        System.out.println(s1.getAge());

        s1.show();

    }
}
  • this关键字

    • 代表本类对象,可以调用本类成员
    • 作用:解决局部变量与成员变量重名的问题
package ithema.day02;
/*
    汽车类

    private 是一个权限修饰符,可以修饰成员,代表私有的意思
    被private修饰的成员,只能在本类中进行访问(外界不能直接使用)
    针对被private修饰的成员变量,提供get 和set方法(获取/赋值)
 */

import java.sql.SQLOutput;

public class Car {
    //成员变量:私有
    private String brand;
    private double price;
    private String color;

    //成员方法:get和set方法
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        //局部变量brand 和 成员变量 brand ,重名了!
        //由于Java遵循就近原则,这里是局部变量brand 自己给自己赋值!
        //成员变量 =局部变量;
        //this :代表本类对象,可以调用本类对象
        this.brand = brand;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {

        this.price = price;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {

        this.color = color;
    }

    //成员方法
    public void drive() {
        System.out.println("Car driving");
    }
}
package ithema.day02;

public class CarTest {
    public static void main(String[] args) {
        //创建对象
        Car c1 = new Car();

        //打印对象名,展示地址值
        System.out.println(c1); //ithema.day02.Car@b4c966a
        /*
            ithema.day02.Car :全类名 =包名 + 类名;
            @ :分隔符
            b4c966a:十六进制的内存值
             0~9 a~f
         */
        //取值
        System.out.println(c1.getBrand());
        System.out.println(c1.getPrice());
        System.out.println(c1.getColor());

        //赋值
        c1.setColor("red");
        c1.setPrice(100);
        c1.setBrand("Toyota");

        //取值
        System.out.println(c1.getColor()+" "+c1.getPrice()+" "+c1.getBrand());

        //调用方法
        c1.drive();
    }
}

  • 封装概念

           是面向对象三大特征之一(封装,继承,多态)

           是面向对象语言对客观世界的模拟,客观世界成员变量都是隐藏在对象内部,外部是无法直接操作的          

  • 封装原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过对该类提供的方法来实现对隐藏信息的操作和访问

成员变量private,提供对应的getXxx()/setXxx()方法

  • 封装好处

通过方法来控制成员变量操作,提高了代码的安全性

把代码用方法进行封装,提高了代码的复用性

  • 构造方法

本质上,作用就是创建对象,借助构造方法的加载时机,完成赋值

new 类名(参数) ;// new 一次自动调用一次 

  • 空参构造

package ithema.day02;

public class Teacher {
    private String name;
    private int age;
    /*
            构造方法格式:
                public 方法法名(){

                }
            构造方法作用:创建对象    

            注意事项:
                1.方法名必须和类名一致
                2.每new一次对象,自动执行一次
     */
    public Teacher() {
        System.out.println("空参构造执行了...");
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) { //void 返回值为空
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


}
package ithema.day02;

public class TeacherTest {
    public static void main(String[] args) {
        //创建对象
        Teacher t = new Teacher();
    }

}
  • 带参构造

package ithema.day02;

public class Teacher {
    private String name;
    private int age;
    /*
            构造方法格式:
                public 方法法名(){

                }
            构造方法作用:创建对象

            注意事项:
                1.方法名必须和类名一致
                2.每new一次对象,自动执行一次
                3.带参构造的本质,就是在创建对象的同时,完成赋值
                4.两种构造都提供,java允许方法重载

     */
    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Teacher() {
        System.out.println("空参构造执行了...");
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) { //void 返回值为空
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


}

        

package ithema.day02;

public class TeacherTest {
    public static void main(String[] args) {
        //带参构造创建对象,并赋值
        Teacher t1 = new Teacher("张三",18);
        System.out.println(t1.getAge());
        System.out.println(t1.getName());

        //空参构造创建对象,配合set方法完成赋值

        Teacher t2 =new Teacher();
        t2.setName("李四");
        t2.setAge(18);
        System.out.println(t2.getAge());
        System.out.println(t2.getName());
    }

}

  • 构造方法的注意事项

  1. 方法名必须和类名一致
  2. 每new一次对象,自动执行一次(加载时机)
  3. 带参构造的本质,就是在创建对象的同时,完成赋值(赋所有的值)
  4.  如果我们不提供构造,系统提供一个默认的空参构造;如果我们提供带参构造,系统就不会给出空参了
  5. 结论:两种构造都写出来,java允许方法重载!

  • JavaBean 标准类

练习1

package ithema.day02.标准类;
/*
     电影测试类
        */

public class MovieTest {
    public static void main(String[] args) {
        //构造空参+set
        Movie m1 = new Movie();
        //赋值
        m1.setName("战狼");
        m1.setType("战争");
        m1.setDirector("吴京");
        //取值
        System.out.println(m1.getName()+" ,"+m1.getType()+" ,"+m1.getDirector());

        //带参构造直接赋值
        Movie m2 = new Movie("阿凡达","詹姆斯卡梅隆","科幻");
        System.out.println(m2.getName()+" ,"+m2.getType()+" ,"+m2.getDirector());


    }
}
package ithema.day02.标准类;
/*
    标准的JavaBean
        1.成员变量:必须私有,不能赋值
        2.构造方法:提供两种
        3.成员方法:针对私有的get和set方法,根据题目提供其他成员的变量

    电影类
        1.成员变量
        2.结构方法
        3.成员方法

 */

public class Movie {
    //1.成员变量:必须私有
    private String name; //名称
    private String director; //导演
    private String type; //类型

    //2.构造方法:提供两种 ->Alt +Insert -> Constructor -> 1.选择空参 2.选择带参

    public Movie() {}

    public Movie(String name, String director, String type) {
        this.name = name;
        this.director = director;
        this.type = type;
    }
    //3.成员方法:针对私有的get和set方法,根据题目提供其他成员的变量  Alt+Intsert -> Getter & Setter -> 全选


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}
  • 快捷键

alt + ins(insert) 快速生成

ctrl +a  全选

48479d08bb5e46cea9dc84182c3b3031.png

常用的API

  • API概述(应用程序编程接口)

    • 获取已有对象并使用

    • ab97ff8a208846b987c6011a7d743f46.png
    • 帮助文档的使用流程

      • dc9ad67049fa446faba1b85b58da042f.png

  • 包和导包

2327b2fddf6b46a3995d3ee541d323cd.png

  • String

78301095458e4eff9d362b42bc863067.png

  • Scanner键盘对象      键盘录入

  • Random随机数对象   

  • GUI

    • Graphical User Interface (图形用户接口)
    • 用图形的方式,来显示计算机操作界面
    • 使用的包

      • java.awt包 :抽象窗口工具包,需要调用本地系统方法实现功能,属于重量级控件
      • Java.swing包:在awt系统上建立了一套图形界面系统,提供了更多的组件,而且完全由Java实现。增强了移植性,属于轻量级控件       
  • 常用的GUI组件

  • 020ee0c7e44242f3a89798a84ce4738e.png
    • JFrame

      • 是一个顶层窗口
      • 构造方法:JFrame():构造一个最初不可见的新窗体
      • 成员方法:
        • void setVisible(boolean b) :显示或隐藏此窗口具体取决于参数b的值
        • void setSize (int width,int height):调整此组件的大小,使其宽度为width,高度为hight,单位为像素

  • 字符串

    • String概述 :java.lang.String 类代表字符串,java程序中所有字符串文字(例如"abc")都为此类对象

    • String的注意点:字符串的内容是不会发生改变,它的对象创建后不能被更改。
    • 字符串拼接产生一个新的字符串               
    •  创建String 对象的两种方式

      • 直接赋值

      • new 
      •        4c56756bcb124d8a9c39765dfa27b797.png
    • Java常用方法(比较)  

      • ==

        • 进本数据类型 比较的是数据类型
        • 引用数据类型比较的是数据类型 
      • 字符串比较

      • boolean equals方法(要比较的字符串)
        • 完全没一样才是true,否则为false
      • boolean equalslgnoreCase(要比较的字符串)
        • 忽略大小写比较
    • 练习

      • 金额转换

        • 查表法
    • StringBuilder 

      • 可以看作一个容器,创建之后里面的内容是可以改变的
      • 作用:提高字符串效率
      • 构造方法

      • 常用方法

继承

概述

继承特点

继承成员变量访问特点

external

super

继承中成员方法访问特点

方法重写概述和应用场景

方法重写注意事项

权限修饰符

继承中构造方法的访问特点

构造方法的访问特点 - 父类没有空参构造方法

代码优化和内存图解

案例学生管理系统

扩充知识点

1.//退出当前正在运行的JVM虚拟机 System.exit(0);

环境搭建

添加实现功能

优化

查询功能的实现

删除学生功能

修改功能

系统优化

案例老师管理系统

需求说明

环境搭建

添加功能实现

抽象类

抽象类的注意事项

定义格式

模板设计模式

final关键字

代码块

接口

接口介绍

接口的定义和特点

接口总结

接口中成员的特点

jdk8中的成员变量的特点—默认方法

总结

jdk8中的成员变量的特点—静态方法

jdk9中的成员特点--私有方法

定义格式

接口使用思路

类和接口的关系

多态

多态概述

多态中成员访问特点

多态的好处和弊端

多态中的转型

多态中转型存在的风险

内部类

内部类的访问特点

局部内部类

匿名内部类

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值