类的创建和对象的实例化

  • 类的定义

    • 类属于引用数据类型,java语言中所有的.class都属于引用数据类型

    • 在类体当中,方法体之外定义的变量被称为 成员变量,成员变量没有赋值,系统默认是0;

    • 语法结构:

      [修饰符列表]  class  类名{
      
             属性
      
             方法
      }

*Eg:学生类 (描述所有学生对象的共同特征)

  - 学生对象有哪些状态信息(属性):学号 姓名 性别 年龄  住址...

  - 学生对象有哪些动作信息(方法):吃饭 睡觉 学习  玩   唱歌...

  - 在类体中描述对象的状态信息(基本信息) 和  动作信息(行为)。 属性通常采用变量的方式来定义,动作采用方法的方式来定义。

  - 在类体当中,方法体之外定义的变量又被称为成员变量,成员变量没有赋值,系统默认是 0/null。

  - 实例

    ```

 public class Student            //定义一个类,类名是Student

    {    

      // 属性  描述的是对象的基本信息

        int Sno;
String Name;
boolean Sex;
int Age;
String Address; //方法 描述的是对象的动作信息 public void study(){ System.out.println("学生在学习");
} public void sing(){ System.out.println("学生在唱歌");
}
}

对象的实例化

  • 实例化对象的语法

    new 类名();

    eg:

    student s=new student();

    • new 是java语言当中的一个运算符

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

  • JVM 内存结构

    • 方法区内存:在类加载的时候,class字节码文件被加载到该内存空间当中。

    • 栈内存(局部变量):方法代码片段执行过程中,会给该方法分配内存空间,在栈内存中压栈。

    • 堆内存:new的对象在堆内存中存储。

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

    • 什么是引用?引用一个变量就是在变量中保存了另一个java对象的内存地址。

    • java语言当中,程序员不能直接操作堆内存。只能通过引用去访问堆内存当中的对象内部的实例变量。

    • 局部变量在栈内存中存储,成员变量中的实例变量在堆内存的java变量内部存储

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

    • 实例变量不能直接通过 类名.变量的方式访问,必须先创建对象,才能访问类下的实例变量。

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

      1.读取数据:引用.变量名; int stu=s.sno; String name=s.name;

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

Eg:

主类:

public class day02 {

   //main方法
public static void main(String[] args) { //实例化Student对象
Student s=new Student(); //给对象的属性赋值 s.Sno=10;
s.Age=20;
s.Name="jock";
s.Address="天津市西青区啦啦啦啦啦啦啊0201047"; // 获取并输出对象的属性值 int a=s.Sno;
int b=s.Age;
String c=s.Name;
String d=s.Address; System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d); // 实例化 User类 User u=new User(); //创建USER对象 // 给新创建的User对象赋值,并输出属性值 u.no=110;
u.name="jack";
u.addr=new Address();
u.addr.city="北京";
u.addr.street="通州区永顺镇珠江帝景7号楼2单元1625";
u.addr.zip=100215; System.out.println(u.name);
System.out.println(u.addr);
System.out.println(u.no); System.out.println(u.no+" "+u.name+"居住在"+u.addr.city+u.addr.street+" "+u.addr.zip);

// 定义一个Student类

    public class Student            //定义一个类,类名是Student

    {    

      // 属性  描述的是对象的基本信息

        int Sno;
String Name;
boolean Sex;
int Age;
String Address; //方法 描述的是对象的动作信息 public void study(){ System.out.println("学生在学习");
} public void sing(){ System.out.println("学生在唱歌");
}
}

// 定义一个 User类

    	public class User {

    	int no;// 基本数据类型
String name;//引用数据类型
Address addr;//Address 引用数据类型 addr 是一个实例变量
}

// 定义一个Address类

    	Address类:

    	public class Address {
String city;
String street;
int zip;
}

------------恢复内容结束------------

Day05_20_Java中类的创建和对象的实例化的更多相关文章

  1. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  2. python中类的创建和实例化

    python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号: python中实例化类不需要使用关键字new(也没有这个关键字),类的实例化类似函数调用方式: # ...

  3. 创建java类并实例化类对象

    创建java类并实例化类对象例一1.面向对象的编程关注于类的设计2.设计类实际上就是设计类的成员3.基本的类的成员,属性(成员变量)&方法 面向对象思想的落地法则一:1.设计类,并设计类的成员 ...

  4. java中类的初始化和对象的初始化

    静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得. 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员 ...

  5. java中类的创建及初始化过程

    java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程.     首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...

  6. 通常Struts框架会自动地从action mapping中创建action对象

    开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...

  7. Java反射机制(创建Class对象的三种方式)

    1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称:   2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...

  8. Qt Quick 组件和动态创建的对象具体的解释

    在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Co ...

  9. 5 -- Hibernate的基本用法 --4 1 创建Configuration对象

    org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法 ...

随机推荐

  1. docket 缺陷

    docker轻量级的虚拟机 依赖于内存和核数 相比于正常的虚拟机来说运行速度会慢

  2. Navicat premium对数据库的结构同步和数据同步功能

    一.在目标数据库新建一个相同的数据库名. 二.工具-->结构同步. 三.填写源数据库和目标数据库. 四.点击比对 五.点击部署 六.点击运行 七.点击关闭.此时源数据库的结构已经同步到目标数据库 ...

  3. 死磕Spring之IoC篇 - 解析自定义标签(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  4. POJ1852-换向思考

    蚂蚁碰撞后反向与穿越的时间一样. 穷竭搜索---->想象力 #include<stdio.h> int main(void){ int n,len,ansNum,mintime,ma ...

  5. 翻译:《实用的Python编程》03_01_Script

    目录 | 上一节 (2.7 对象模型) | 下一节 (3.2 深入函数) 3.1 脚本 在该部分,我们将深入研究编写 Python 脚本的惯例. 什么是脚本? 脚本就是运行和终止一系列语句的程序. # ...

  6. 《C++ Primer》笔记 第13章 拷贝控制

    拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么.拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么.析构函数定义了当此类型对象销毁时做什么.我们称这些操作为拷贝控制 ...

  7. Prometheus自定义指标

    1.  自定义指标 为了注册自定义指标,请将MeterRegistry注入到组件中,例如: public class Dictionary { private final List<String ...

  8. ProBuilder快速原型开发技术 ---模型精细化操作

    前面我们讲解了很多ProBuilder功能,但是对于制作一款复杂的模型来说,还远远不够.需要更多的对于模型细节的处理,这就是本篇文章要讲解的"模型精细化操作"技术. 关于PB对于模 ...

  9. Spring(一):Spring概述及相关概念

    Spring简介 Spring主要作用是用来解耦,降低代码之间的耦合度.根据功能的不同,可以将系统的代码分为主业务逻辑与系统服务逻辑. 主业务逻辑之间代码联系紧密,相互调用较多,复用性相对较低: 系统 ...

  10. PTA 中序输出度为2的结点

    6-10 中序输出度为2的结点 (10 分)   本题要求实现一个函数,按照中序遍历的顺序输出给定二叉树中度为2的结点. 函数接口定义: void InorderPrintNodes( BiTree ...