Java基础知识总结(39)

1、今天学了什么 (1)构造器 构造器的定义: 需要注意的是构造器是一种特殊的方法,其方法名和类名相同,但没有方法返回值,也不用void修饰。

复制代码
        [修饰符] 方法名(形参列表){
            方法体   
        } 
        修饰符:修饰符可以省略,也可以是public、protected、private其中之一,如果构造器的修饰符为private,则不能通过new调用,也就是说当一个类的构造器被private修饰,该类则不能通过new来创建对象
        方法名:必须与类名相同
        形参列表:和方法中的形参格式完全相同
​
    构造器的作用:
​
        1、创建对象
        2、初始化实例变量
        3、如果开发者不提供构造方法,编辑器会自动提供一个无参构造方法

(2)this关键字

复制代码
    1、this访问实例变量时,一个作用是区分实例变量和局部变量,另一个是在实例方法中访问实例变量
    2、this可以在方法中访问调用类中的其他实例方法,this可以省略
    3、在构造器中可以用this调用其他构造器,且只能在第一行

(3)类方法和实例方法

复制代码
    1、static修饰的方法叫做类方法
    2、不用static修饰的方法叫做实例方法,实例方法属于对象,调用方法时必须先创建对象,对象.方法名
    3、在同一个类中,类方法间互相调用实际上可以省略类名,同样的,实例方法间互相调用省略了this
    4、在同一个类中,实例方法可以调用类方法,因为类方法的初始化在实例方法的初始化之前,实例方法被调用时,内部类已经被加载了。this不能出现在类方法中。

(4)方法中参数的传递

复制代码
    public class Test {
​
        //在JVM中的栈内存中 创建main方法栈帧
        public static void main(String[] args) {
            // TODO Auto-generated method stub
​
            int a = 10;
            int b = 5;
            //调用swap方法,并传递参数。JVM在栈内存中 创建swap方法栈帧
            swap(a,b);
            //方法调用结束后 JVM swap方法栈帧被回收
            System.out.println(a);
            //5
            System.out.println(b);
    
        }
复制代码
        public static void swap(int a,int b) {
            int temp = a;
            a = b;
            b = temp;
        }
​
    }
复制代码
    public class Cat {
​
        int age;
​
        public Cat() {
    
        }
​
        public Cat(int age) {
            this.age = age;
        }
    }
​
    public class Test {
​
        //在栈内存中 创建main方法栈帧
        public static void main(String[] args) {
            // TODO Auto-generated method stub
​
            //实例化cat对象 JVM会在堆内存中为Cat类实例化的对象分配内存,并将对象的地址存储在栈内存中
            Cat cat = new Cat(18);
            //调用change方法,并传递引用类型的参数对象cat。JVM在栈内存中 创建swap方法栈帧
            change(cat);
            //方法调用结束后 JVM中change方法栈帧被回收,打印对象的age变量,此时age变量的值已被改变。
            System.out.print(cat.age);
    
        }
​
        /**
        * JVM会在栈内存中为变量cat分配新的内存,该内存中同样存储的是堆内存中实参对象的地址
        * @param cat
        */
        public static void change(Cat cat) {
            //为堆内存中对象的实例变量赋值
            cat.age = 30;
    
        }
    }

(4)可变参数

复制代码
    本质是数组
    可变参数是指方法参数列表不确定
    public class Varargs {
        public static void main(String[] args) {
            //可变参数可以单独传递
            test(100, "张三","李四","王五");
            String[] strs = {"张无忌","赵敏","张三丰"};
            //可变参数可以传入数组
            test(200, strs);
            //也可以不传递
            test(300);
        }
​
        public static void test(int a,String...names) {
            System.out.println(a);
            if(names!=null&&names.length>0) {
                for (String name : names) {
                    System.out.println(name);
                }
            }
        }
    }
    遍历可变参数时,先判断是否为空并且长度大于0
相关推荐
干啥啥不行,秃头第一名几秒前
C++与机器学习框架
开发语言·c++·算法
花月C1 分钟前
基于WebSocket的 “聊天” 业务设计与实战指南
java·网络·后端·websocket·网络协议
hongtianzai2 分钟前
Laravel7.x十大核心特性解析
java·c语言·开发语言·golang·php
永远睡不够的入5 分钟前
C++庖丁解牛:深入理解多态:从虚函数表到底层实现
开发语言·c++
姚青&6 分钟前
Pytest fixture 参数化(params 参数)
开发语言·python·pytest
计算机学姐7 分钟前
基于SpringBoot的校园二手交易系统
java·vue.js·spring boot·后端·spring·tomcat·intellij-idea
qq_334903158 分钟前
C++与人工智能框架
开发语言·c++·算法
夕珩9 分钟前
Java 排序算法详解:冒泡排序、选择排序、堆排序
java·算法·排序算法
2401_8914821710 分钟前
C++中的状态模式
开发语言·c++·算法
9523613 分钟前
初识多线程
java·开发语言·jvm·后端·学习·多线程