Java中对象的创建和使用

创建类

类体=属性+方法

 public class Student{

    Student是类,属于引用数据类型,这个类型名就是:student

   //属性【存储数据采用变量的形式】

   //由于变量定义在类体当中,方法体之外,这种变量称为成员变量

  //所有的学生都有学号信息,但是每一个学生的学号都是不同的

  //所以要访问这个学号必须先创建对象,通过对象去访问学号信息

  //学号信息不能直接通过“类”去访问,所以这种成员变量又叫做:实例变量

  //对象又被称为实例,实例变量又被称为对象变量【对象级别的变量】

  //不创建对象,变量的内存空间是不存在的,只有创建了对象,变量的内存空间才会创建

  int no;

  String name;

  boolean age;

  String addr;

}

使用类

  public class OOTest01{

     public static void main(String[] args){

         //int是基本数据类型

         //i是一个变量名

         //10是一个int类型的字面值

         int i=10;

        //通过一个类可以实例化N个对象

       //实例化对象的语法:new 类名();

      //new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间

     //方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中

    //栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈

   //堆内存:new的对象在堆内存中存储

   //Student是一个引用数据类型

   //s是一个变量名

   //new Student()是一个学生对象

   //s是一个局部变量【在栈内存中存储】

   //什么是对象?new运算符在堆内存中开辟的内存空间称为对象

   //什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址

  //java语言当中,程序员不能直接操作堆内存,java中没有指针,不想C语言

  //java语言当中,程序员只能通过“引用”去访问堆内存当中对象内部的实例变量

  Student s=new Student();

  //访问实例变量的语法格式:

      读取数据: 引用.变量名

      修改数据: 引用.变量名=值

 

  int stuNo = s.no;

  String stuName = s.name;

  int stuAge = s.age;

  boolean stuSex = s.sex;

  String stuAddr = s.addr;

 

   System.out.println("学号="+stuNo);   //0

   System.out.println("姓名="+stuName); //null

   System.out.println("年龄="+stuAge); //0

   System.out.println("性别="+stuSex);  //false

   System.out.println("住址="+stuAddr); //null

  

   s.no = 10;

   s.name = "jack";

   s.age = 20;

   s.sex = true;

   s.addr = "北京";

  

   System.out.println("学号 =”+s.no);  //10

   System.out.println("姓名="+stuName); //jack

   System.out.println("年龄="+stuAge); //20

   System.out.println("性别="+stuSex); //true

   System.out.println("住址="+stuAddr); 北京

  

    //再通过类实例化一个全新对象

   //stu是一个引用,同时也是一个局部变量

   //Student是变量的数据类型

   Student stu = new Student();

   System.out.println(stu.no);  //0

   System.out.println(stu.name);   //null

   System.out.println(stu.sex);  //false

   System.out.println(stu.age);  //0

   System.out.println(stu.addr); //null

  

    //编译报错,no这个实例变量不能直接采用“类名”的方式访问,因为no是实例变量,对象级别的变量,变量存储在java对象的内部,必须先有对象,通过对象才能访问no这个实例变量,不能直接通过“类名”访问

   System.out.println(Student.no);

  }

}

 局部变量在栈内存中存储

 成员变量中的实例变量在堆内存的java对象内部存储

  实例变量是一个对象一份,100个对象100份

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效构建Java应用:Maven入门和进阶(二)

高效构建Java应用:Maven入门和进阶(二) 二.基于IDEA的Maven的工程创建2.1 梳理Maven工程GAVP属性2.2 Idea构建Maven JavaSE工程2.3 Idea构建Maven JavaEE工程2.4 Maven工程项目结构说明 二.基于IDEA的Maven的工程创建 2.1 梳理Maven工程GAVP…

ppt怎么录屏录音并且导出?好用录屏软件推荐

ppt已经成为了日常工作与学习中必不可少的工具,而ppt屏幕录制功能,可以方便用户将他人的演讲或视频中的内容记录下来,以便进一步学习与研究。录制ppt演示并将其导出为视频文件,可以帮助我们进行分享,但是很多人不知道p…

三种风格:山海鲸可视化软件模板的个性化定制之旅“

当我们谈论数据可视化时,一个好的可视化组件套件模板至关重要。一个优秀的模板不仅可以提高数据可视化的效果,还能让用户更加深入地探索和理解数据。作为山海鲸可视化软件的开发者,在提供免费好用的产品同时我们也希望最大限度降低用户设计难…

13、Redis高频面试题

1、项目中为什么用Redis 我们项目中之所以选择Redis,主要是因为Redis有下面这些优点: 操作速度快:Redis的数据都保存在内存中,相比于其它硬盘类的存储,速度要快很多数据类型丰富:Redis支持 string&#x…

逻辑回归(解决分类问题)

定义:逻辑回归是一种用于解决分类问题的统计学习方法。它通过对数据进行建模,预测一个事件发生的概率。逻辑回归通常用于二元分类问题,即将数据分为两个类别。它基于线性回归模型,但使用了逻辑函数(也称为S形函数&…

Android Studio下载gradle反复失败

我的版本:gradle-5.1.1 首先检查设置路径是否正确,参考我的修改! 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载,我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

图像的初识

一、图像的数组表示 RGB能够构成人眼所能识别的所有颜色。 二、图像的变换 Example: img.shape Out[329]: (512, 768, 3) img.dtype Out[330]: dtype(uint8) #补值变换 shift_temp_img [255,255,255] - img shift_img Image.fromarray(shift_temp_img.astype(ui…

「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解

引言:CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击技术,通过使用用户的身份进行不诚实地操作,恶意用户可以在受害者(目标)的机器上执行一些未授权的操作。这可能会危及…

Jenkins自动化部署docker

Jenkins自动化部署docker和普通方式构建 docker外挂目录 准备测试服务器docker环境准备jdk环境将上传jar包修改为app.jar对外暴露1000端口启动jar FROM openjdk:8-jdk-alpine ARG JAR_FILE COPY ${JAR_FILE} app.jar EXPOSE 1000 ENTRYPOINT ["java","-jar&q…

Effective Objective-C学习第一周

OC的起源 OC是一种消息型语言,使用的是“消息结构”而非“函数调用”,由smalltalk演化而来。使用消息结构的语言运行时执行的代码由运行环境来决定,而使用函数调用的语言由编译器决定。 什么是引用计数 OC将堆内存管理抽象出来了。不需要使…

Docker教程 Dockerfile 标签介绍

docker commit 也可以用来构建镜像,但是并不推荐。相反,更推荐使用dockerfile与docker build命令来构建镜像,Dockerfile使用基本的基于DSL(Domain Specific Language)语法的指令来构建Docker镜像。Dockerfile构建镜像更具备可重复性、透明性以…

MobaXterm连接服务器步骤

双击该软件 选择Session 点击SSH 填写服务器的IP地址、服务器的用户名称、Port这个端口号一般都是这个,但有些可能例外,自己注意一下,最后点击OK就行 这个五角星点击一下,就可以看到您自己刚才的配置。 鼠标左键双击&…

第 12 章 多路查找树

文章目录 12.1 二叉树与B 树12.1.1 二叉树的问题分析12.1.2 多叉树12.1.3 B 树的基本介绍 12.2 2-3 树12.2.1 2-3 树是最简单的 B 树结构, 具有如下特点:12.2.2 2-3 树应用案例12.2.3 其它说明 12.3 B 树、B树和 B*树12.3.1 B 树的介绍12.3.2 B 树的介绍12.3.3 B树的介绍12.3.4…

uniapp-x uts 介绍

uts 是什么 uts,全称 uni type script,是一门跨平台的、高性能的、强类型的现代编程语言。 它可以被编译为不同平台的编程语言,如: web平台,编译为JavaScriptAndroid平台,编译为KotliniOS平台&#xff0…

无root权限安装git-lfs(linux版)

首先给大家看一下官方链接:安装 Git Large File Storage - GitHub 文档 git-lfs/INSTALLING.md at main git-lfs/git-lfs (github.com) 直接用这个命令好啦~绕了一大圈 conda install git #yum install git 以下是手动安装 接下来是我的步骤: 首先在…

深入理解 Spark(四)Spark 内存管理模型

Spark 中的内存管理和资源管理模型 Executor 进程作为一个 JVM 进程,其内存管理建立在 JVM 的内存管理之上,整个大致包含两种方式:堆内内存和堆外内存。 一个 Executor 当中的所有 Task 是共享堆内内存的。一个 Work 中的多个 Executor 中的…

如何简单的使用文心一言(高级版)(中国版ChatGPT)

文心一言API高级版使用 一、百度文心一言API(高级版)二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例5、智能生成API代码 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API(高级版) 基于百度文心一言语言大模型的…

[NAND Flash 5.4] QLC 闪存给SSD主控带来了很大的难题?

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 前言 世界各大主流闪存厂商,如美光、海力士、铠侠和长江存储积极致力于QLC的研发,并相继推出了QLC SSD产品。随着技术的不断进步,人们普遍担心的QLC擦…

Elasticsearch 快速入门指南【总结记录】

本文将介绍一些基本概念&#xff0c;帮助您快速入门使用Elasticsearch。 一、概述 ES用来解决什么问题&#xff1f;Elasticsearch是解决海量数据&#xff08;已经存在的数据&#xff09;全文检索的不二只选。 Elasticsearch是一个基于Java语言开发&#xff0c;建立在开源搜索…

cssip 第11章 : 安全网络架构和保护网络组件

11.1 OSI模型 协议&#xff1a;定义数据如何通过网络介质传输。 11.1.1 OSI模型的历史 开发 OSI 协议是为给所有计算机系统建立通用的通信结构或标准。 OSI模型表示&#xff1a;应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 11.1.3 封装/解…