首页 > 其他分享 >7.9

7.9

时间:2023-07-09 18:23:32浏览次数:35  
标签:静态 代码 实例 static Student 7.9 public

成员方法分为静态的和非静态的,直接用 类名.func() 访问,不需要实例化对象

    public static void func(){

        System.out.println("静态的成员方法!");

        //System.out.println(name+"静态的成员方法!");//err 静态方法不依赖对象

    }

     

    public static void funcStatic(){//访问非静态的成员变量

        Student student = new Student();

        student.age = 10;

        System.out.println(student.age);//打印10

    }

 

    //成员方法里面都是默认有Student this,除了静态的方法和构造方法

    //这也再次解释了静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

    public void func1(Student this){

        System.out.println(student.age);

    }

}

public class Test {

    public static void main(String[] args) {

        Student.func();//打印:静态的成员方法!

        System.out.println(Student.classes);//打印高一三班

    }

}

 

用public static String classes = "高一三班";说明:

 

静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。所以他不存在对象里面,他单独的存放在一块方法区里面,仅且只有一份。

 

我们访问静态的成员变量直接用 类名.成员变量访问,因为静态的成员变量与对象无关。(静态的成员方法也是如此)

 

生命周期伴随类的一生(JVM:随类的加载而创建,随类的卸载而销毁,上面的认识JVM有讲解)

 

在静态的成员方法里面是不能出现非静态的成员变量,因为静态的成员变量和方法是不依赖对象的;但是呢,如果你想要在静态的成员方法里面访问非静态的成员变量需要在方法的内部定义一个对象,通过对象的引用去访问。

 

通过一段自定义代码再次解释static:

 

//常见的自定义方法

public class Test {

    public static void func(){

        System.out.println("static");

    }

    public static void main(String[] args) {

        func();//打印static

    }

}

 

 

//没有static修饰

public class Test {

    public void func(){

        System.out.println("static");

    }

    public static void main(String[] args) {

        //func();//err

        Test test = new Test();

        test.func();//打印static

    }

}

在Java自定义的方法里面为什么要加static呢?通过上面的代码我们可以知道main方法是静态的(static修饰的),通过学习后我们也知道了静态的成员方法和变量是不依赖对象的,所以当我们自定义的方法没有static修饰时,我们想要访问的话,就需要在方法的内部定义一个对象,通过对象的引用来访问。

 

7.2 static初始化

  静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性

静态成员变量的初始化分为两种:就地初始化 和静态代码块初始化。

八、代码块详解

用{}括起来定义的一段代码就叫做代码块。

 

分为普通代码块(定义在main函数里面) ;构造代码块 ;静态代码块 ;同步代码块(后面文章详解)

 

代码如下:

 

class Student{

    //构造代码块:一般用于初始化实例成员变量

    public Student(){

        System.out.println("构造代码块");

    }

    //实例代码块

    {

        System.out.println("实例代码块");

    }

    //静态代码块:一般用于初始化静态成员变量。

    static{

        System.out.println("静态代码块");

    }

}

public class Test {

    public static void main(String[] args) {

        Student student = new Student();//按照静态——>实例——>构造的顺序打印

        System.out.println("=========");

        Student student1 = new Student();//按照实例——>构造的顺序打印(静态的代码块只会执行一次,不会管你实例化多少个对象)

    }

}

//打印结果

静态代码块

实例代码块

构造代码块

实例代码块

构造代码块

由上面的代码可知:

类是最先被加载的,实例化对象的时候(类加载完成了)就会按照静态——>实例——>构造的顺序打印;二次实例化对象后,按照实例——>构造的顺序打印(静态的代码块只会执行一次,不会管你实例化多少个对象)

如果有多个相同类型的代码块,就看定义的次序。实例代码块只有创建对象的时候才会调用。

静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的

 

标签:静态,代码,实例,static,Student,7.9,public
From: https://www.cnblogs.com/dmx-03/p/17539103.html

相关文章

  • 2023.7.9
    1//选择结构2publicclassMain3{4publicstaticvoidmain(String[]args)5{6Scannerscanner=newScanner(System.in);7System.out.println("请输入内容:");8Strings=scanner.nextLine();9if(s.eq......
  • CentOS 7.9配置SSH白名单用户、白名单IP和基于公钥认证实现免密登录
    一、演示环境:IPHostnameOS192.168.0.200server1CentOS7.9192.168.0.201server2CentOS7.9192.168.0.202server3CentOS7.9说明:1、上述3台主机都关闭了firewalld和SELinux;2、每一次演示后,所有主机都会恢复默认配置。二、配置SSH白名单用户登录:1、server1中创建测试用户user1、user2......
  • 龙蜥7.9 rpm安装mqtt
    1、下载mqtt的rpm包,https://www.emqx.io/downloads?os=CentOS2、安装依赖,去http://rpmfind.net/下载openssl11和openssl11-libsopenssl11-1.1.1k-5.el7.x86_64.rpmopenssl11-libs-1.1.1k-5.el7.x86_64.rpm3、逐个安装lib、openssl11、emqx三个包,即可,后面的配置就和以前一样了......
  • 龙蜥7.9 rpm安装mysql
    1、拿到下图几个rpm包2、依次执行如下安装命令rpm-ivhmysql-community-common-5.7.19-1.el7.x86_64.rpm--nodeps--forcerpm-ivhmysql-community-libs-5.7.19-1.el7.x86_64.rpm--nodeps--forcerpm-ivhmysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm--nodep......
  • centos or 龙蜥7.9 挂载磁盘
    1、使用ext3的分区格式,挂载到/data目录fdisk-lfdisk/dev/vdbn┛p┛1┛┛┛wq┛mkfsext3/dev/vdb1echo'/dev/vdb1/dataext3defaults00'>>/etc/fstabmkdir/datamount/dev/vdb1/data2、使用xfs的分区格式,挂载到/wwwfdisk-lfdisk/dev/vdbn┛p┛......
  • 龙蜥7.9 编译安装redis
    1、下载redis安装包2、我一般放在/home下面,redis默认安装在/usr/local/bin/下面,修改目录命令为:makePREFIX=/usr/local/redisinstall#安装编译环境yum-yinstallgcc-c++autoconfautomake#开始安装cd/hometarzxvfredis-7.0.11.tar.gzcdredis-7.0.11/makemakeinsta......
  • 龙蜥7.9配置yum本地源
    1、离线安装上传系统镜像到服务器本地回环挂载#离线安装上传龙镜像到服务器本地回环挂载mkdir/mnt/iso#创建挂载点目录mount-oloop/home/AnolisOS-7.9-GA-x86_64-dvd.iso/mnt/iso/#本地回环挂载2、修改/etc/yum.repos.d/AnolisOS-os.repovim/etc/yum.repos.d/Ano......
  • 升级CentOS 7.9内核
    1.背景不知道大家有没有遇到过这样的问题,在使用docker创建vlan网络时,会提示“Errorresponsefromdaemon:kernelversionfailedtomeettheminimumipvlankernelrequirementof4.2,found3.10.0”,需要最新的稳定版。看一下系统的内核版本,使用以下命令:uname-a先导入......
  • 在CentOS7.9上搭建以太坊私链
    为了方便了解以太坊的操作流程,故在CentOS7上搭建以太坊的私链。下面,介绍在CentOS7.9x64上部署以太坊的私链。    常用的以太坊源码是用Go语言编写的,所以要安装Go。这里选择Go1.15.6。1、搭建Go软件环境    安装方法,请参考这篇文章:https://blog.csdn.net/sanqima/art......
  • CentOS7.9 k8s集群环境搭建
    环境搭建本次环境搭建需要安装三台Centos服务器(一主二从),k8s采用1.25.4版本主机安装安装虚拟机过程中注意下面选项的设置:操作系统环境:CPU(2C)内存(4G)硬盘(50G)语言选择:English软件选择:基础设施服务器分区选择:自动分区网络配置:按照下面配置网路地址信息主机名设置:按照下面信......