java之成员变量(实例成员变量和静态成员变量)

article/2025/10/1 21:15:38

类的成员

类的成员可以包含以下:字段、方法、代码块、内部类和接口等。此处我们重点介绍字段.

1.1字段/属性/成员变量

在类中, 但是方法外部定义的变量. 这样的变量我们称为 "字段" 或 "属性" 或 "成员变量"(三种称呼都可以, 一般不会严格区分).

在java中,成员变量分为两种:实例成员变量和静态成员变量。

1.1.1实例成员变量

实例成员变量:是定义在方法外部和类内部的且不被static所修饰的变量.用于描述一个类中包含哪些数据

代码示例:

class Person {public String name;//其别名有三种:属性/实例成员变量/字段public int age;public boolean flg;public char ch;
}public class LeiHeDuiXiang {public static void main(String[] args) {Person person = new Person();//默认值为0System.out.println(person.age);//默认值为nullSystem.out.println(person.name);//默认值为'\u0000',输出时不显示任何东西System.out.println(person.ch);//默认值为falseSystem.out.println(person.flg);}

注意事项:

1:通过对象的引用来访问实例成员变量

2:"访问" 既包含读, 也包含写.

3:对于一个成员变量如果没有显式设置初始值, 那么会被设置一个默认的初值.

下面来介绍下成员变量(不管是静态成员变量还是实例成员变量)在不赋值情况下的默认取值吧:

 byte short int long默认取值为 0

 float 默认取值为0.0f;  

double 默认取值为0.0

 boolean  默认取值为false

 char 默认取值为'\u0000'(最终输出时为空)

1.1.2静态成员变量

 static关键字修饰成员变量,简称静态成员变量,又称类变量
 1.访问方式:通过类名.静态成员变量名进行访问
 2.内存的存储方式:方法区
 3.特点:静态的只有一份且不依赖对象

代码示例: 

class Man {public static int count;
}
public class LeiHeDuiXiang {public static void main(String[] args) {Man.count++;System.out.println(Man.count);Man.count++;System.out.println(Man.count);Man.count++;System.out.println(Man.count);}
}//输出结果为:
1
2
3

因为count为静态成员变量,其存储在方法区中且只有一个,是共享的,所以每次当访问它时,都会影响它的值

1.2认识null

null 在 Java 中为 "空引用", 表示不引用任何对象. 类似于 C 语言中的空指针. 如果对 null 进行 . 操作就会引发异常.

代码示例:

class Person {public String name; public int age;
}
class Test {public static void main(String[] args) { Person person = new Person();System.out.println(person.name.length()); // 获取字符串长度}
}
// 执行结果Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:9)

同时假如我们给一个对象的引用赋值为null时,当输出这个引用此时还是为null,而假如此时不为空的话,输出值又会为多少呢?

Person person1 = new Person();System.out.println(person1);

上述代码最终的输出结果为如下:

Person为类,@为分隔符,4554617c为对象地址的哈希值,那么为什么最终的输出结果为这个呢?我们来看下源码便一清二楚了

1首先来看println处的源码:

Object类为所有类的父类,valeOf方法是将引用x转化为字符串,那么是如何转化的呢?我们接着看valeOf的源码:

此处判断这个引用是否为空,若为空,则返回null,若不为空,则返回这个引用所调用的toString方法的返回值,那么我们再来看toString方法的源码吧:

我们可以看到,toString方法返回的是类的名字加上一个分隔符号@再加上一个把哈希值变成十六进制的数字

总结:1.当我们输出对象的引用时,此时我们会在底层调用Object类的toString方法,返回一个对象地址的十六进制哈希值

          2.toString 方法会在 println 的时候被自动调用. 将对象转成字符串这样的操作我们称为 序列化.

          3. toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实现我们自己版本的转换字符串方法. (关于继承和重写这样的概念, 我们后面会重点介绍).

          4.IDEA快速生成Object的toString方法快捷键:alt+f12(insert),此处我们没有重写这个默认的toString方法,并无大碍,后面会详细介绍。

1.3成员变量初始化

很多时候我们不希望成员变量使用默认值, 而是需要我们显式设定初值. 那么此时有五种方法供我们成员变量初始化:

1:默认初始化,即程序所赋予的默认值,上面已经讲过,此处不再过多陈述。

2:就地初始化:即在定义成员变量时便进行初始化,如下所示:

public String name = "张三";public int age = 18;

3:类外初始化,即通过对象的引用进行初始化,这种方法一般用的最多,下面来看下实现过程:(注意私有的可通过setXX和getXX方法实现)

public static void main(String[] args) {Person person = new Person();person.name = "张三";person.age = 14;}

4:通过实例代码块和静态代码块进行初始化:这个在后面我们会专门讲到,在这里只需要知道这两个代码块的作用一般是提前初始化一些数据.

5.通过构造方法进行初始化。


http://chatgpt.dhexx.cn/article/Ie8dOUyd.shtml

相关文章

java成员变量的调用_java中对象调用成员变量与成员的方法介绍

java中对象调用成员变量与成员的方法介绍 发布时间:2020-05-06 10:03:53 来源:亿速云 阅读:838 作者:小新 今天小编给大家分享的是java中对象调用成员变量与成员的方法介绍,相信很多人都不太了解,为了让大家…

局部变量和成员变量

局部变量和成员变量的区别: 定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中作用范围不一样【重点】 局部变量:只有在方法当中才可以使用,出了方法就不能再用了 成…

C++之静态成员变量

一、静态成员变量 1)static修饰的静态成员 静态成员变量、静态成员函数 静态成员变量: 1、static声明为静态的,称为静态成员,不管这个类创建了多少对象,静态成员只有一个拷贝,但是类的其他所有成员共享…

静态成员-静态成员变量

静态成员 静态成员都是用static修饰,它的特点是不论创建多少个对象,程序都只创建一个静态成员。 最主要的特点:共享 什么是共享呢? 例如:统计超市中所有商品数量的总和,商品数量的总和是随着每一个数量…

成员变量和成员方法

成员变量 1、成员变量的分类 实例变量:没有static修饰,也叫对象属性(实例变量),属于某个对象的,通过对象来使用 类变量:有static修饰,也叫类变量,属于整个类的&#x…

Python——成员变量和类变量

类中的变量分为两种类型:一种是成员变量(实例属性),另一种是类变量(类属性)。 成员变量是在构造方法__init__()中定义的,通过 self 参数引用; 类变量是在类中方法之外定义的变量。 在类的外部,成员变量属于对象,只能通过对象名访问; 类变量属于类,既可以通过类名访问,又可以…

成员变量[详解]

我是认为"成员变量包含实例变量和静态变量(静态变量也是类变量)",但学习过程中遇到说"成员变量仅仅指实例变量",所以下面具体研究一下成员变量的定义、包含关系 1、认同"成员变量包含实例变量和静态变量"的说法汇总 说法一 java中,成员变量是指…

基于MediaPlayer实现视频播放

一、概述 一个简单的视频播放器,满足一般的需求。使用原生的 MediaPlayer 和 TextureView来实现。 功能点: 获取视频的首帧进行展示,网络视频的首帧会缓存视频播放,本地视频或者网络视频感知生命周期,页面不可见自动…

玩转 Android MediaPlayer之Media Proxy

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 本文是在《Android MediaPlayer与Http Proxy结合之提高篇》基础上,进一步优化代理服务器,支持了Http的302、301重定向,获取Http Request和Http Response的文…

MediaPlayer播放assets文件夹下的音频

一、先放张图,MediaPlayer的生命周期图如下: 二、mediaPlayer方法 setDataSource() //设置要播放的音频文件的位置 prepare() //在开始播放之前调用这个方法完成准备工作 start() //开始或继续播放音频 pause() //暂停播放音频 reset() //将MediaPlayer…

Android openGL+MediaPlayer播放视频

在Android平台折腾了好多次openGL MediaPlayer播放视频的事情,openGL本身是套API规范,其身后的计算机图形学还是比较难缠,但只是播放视频用不了太多东西,没有过多的坐标转换、简单2D纹理展示,实现起来还是比较简单&am…

Android-MediaPlayer播放网络音频

官方文档&#xff1a;https://developer.android.google.cn/reference/android/media/MediaPlayer 运行截图&#xff1a; 主布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.a…

深入Android MediaPlayer的使用方法详解

1&#xff09;如何获得MediaPlayer实例&#xff1a; 可以使用直接new的方式&#xff1a; MediaPlayer mp new MediaPlayer(); 也可以使用create的方式&#xff0c;如&#xff1a; MediaPlayer mp MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了 2) 如…

Android MediaPlayer状态机

翻译Android Reference Manual的MediaPlayer的状态机 对播放音频/视频文件和流的控制是通过一个状态机来管理的。下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态。椭圆代表MediaPlayer对象可能驻留的状态。弧线表示驱动MediaPlayer在各个状态之间迁移的…

Android提高第二十一篇之MediaPlayer播放网络视频

本文来自http://blog.csdn.net/hellogv/ &#xff0c;引用必须注明出处&#xff01; 上次讲解了MediaPlayer播放网络音频&#xff0c;介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法&#xff0c;这次再讲解MediaPlayer播放网络视频。播放网络视频比播放网络音频多需要…

Android开发之MediaPlayer详解

Android开发之MdiaPlayer详解 MediaPlayer类可用于控制音频/视频文件或流的播放&#xff0c;我曾在《Android开发之基于Service的音乐播放器》一文中介绍过它的使用。下面让我们看一下MediaPlayer类的详细介绍。 一、类结构&#xff1a; java.lang.Object ↳ android.med…

Android 9.0 MediaPlayer播放流程分析

1.MediaPlayer初始化流程 EventHandler是后面处理数据回调的handler. 在AudioFlinger.cpp中获取nextUniqueId&#xff1a; audio_unique_id_t AudioFlinger::nextUniqueId(audio_unique_id_use_t use) {// This is the internal API, so it is OK to assert on bad parameter.…

Android的MediaPlayer架构介绍

本文主要介绍的是Android中很重要也最为复杂的媒体播放器&#xff08;MediaPlayer&#xff09;部分的架构。对于Android这样一个完整又相对复杂的系统&#xff0c;一个MediaPlayer功能的实现不在其具体的功能&#xff0c;而是具体功能如何适应Android系统Android MediaPlayer的…

Android之MediaPlayer详解

文章转自&#xff1a;http://www.cnblogs.com/gansc23/archive/2011/04/08/2009868.html MediaPlayer类可用于控制音频/视频文件或流的播放。关于如何使用这个类的方法还可以阅读VideoView类的文档。 1&#xff0e;状态图 对播放音频/视频文件和流的控制是通过一个状态机来…

Android MediaPlayer播放视频详细步骤

MediaPlayer类是媒体框架最重要的组成部分之一&#xff0c;此类的对象能够获取&#xff0c;解码以及播放音频和视频&#xff0c;而且只需极少量设置&#xff0c;它支持多种不同的媒体源&#xff0c;例如&#xff1a; 本地资源 内部Url&#xff0c;例如您可能从内容解析器获取U…