首页 > 编程语言 >类和对象.java

类和对象.java

时间:2024-03-24 22:01:58浏览次数:28  
标签:java String 对象 gender void gf1 public name

1,类

类(设计图):是对象共同特征的描述

对象:是真实存在的具体事物

在Java中,必须先设计类,才能有对象

定义格式:

class 类名{

成员变量;成员方法;

}

class girl{
    //属性(成员变量)
    public String name;
    public int age;
    public String gender;
    //行为
    public void shuiJiao(){
        System.out.println("在睡觉");
    }

2,对象的创建与使用

对象定义格式:

   类名 对象名=new 类名();

对象访问格式:

   对象名.属性名

public class GirlFrienf {
    public static void main(String[] args) {

        girl gf1=new girl();//创建对象
        gf1.name="肘子";
        gf1.age=18;
        gf1.gender="大帅哥";

//访问属性
        System.out.println(gf1.name);
        System.out.println(gf1.age);
        System.out.println(gf1.gender);
//访问方法
        gf1.sleep();
        gf1.eat();
    }
}

对象的内存分配:

堆内存:所有使用new关键字创建的对象都在堆内存中

85ed7cc5165241c69849bcb2d4c897f1.jpeg

Java堆和栈的区别:

各司其职:最主要的区别就是栈内存用来存储局部变量和方法调用。而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。

独有还是共享:栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私有内存。而堆内存中的对象对所有线程可见。堆内存中的对象可以被所有线程访问。

异常错误:如果栈内存没有可用的空间存储方法调用和局部变量,JVM会抛出java.lang.StackOverFlowError。而如果是堆内存没有可用的空间存储生成的对象,JVM会抛出java.lang.OutOfMemoryError。

空间大小:栈的内存要远远小于堆内存,如果你使用递归的话,那么你的栈很快就会充满。如果递归没有及时跳出,很可能发生StackOverFlowError问题。你可以通过-Xss选项设置栈内存的大小。-Xms选项可以设置堆的开始时的大小,-Xmx选项可以设置堆的最大值。这就是Java中堆和栈的区别。

e894386d497b4292abae8ff333773854.jpeg

3,封装

  对象代表什么,就要封装对应的数据,并提供数据是对应的行为

private关键字:

1,是一个权限修饰符

2,可以修饰成员变量(变量和方法)

3,被private修饰的成员只能在本类中访问(所以要使用Set()和Get()方法)

public和private相反,表示公共的,公开的,再所有的类中都可以使用它修饰的成员。

针对每一个私有化(private)的变量,都要提供set和get方法
set:给成员变量赋值
get:对外提供成员变量的值

e73b40a471b644b09e023e2c2a50a78d.png

下面两个类,必须在同一个包里面:

package text;
//定义一个类
class girl{
    //属性(成员变量)
    private String name;
    private int age;
    private String gender;
    //行为
    public void shuiJiao(){
        System.out.println("在睡觉");
    }


    //针对每一个私有化的变量,都要提供set和get方法
    //set:给成员变量赋值
    //get:对外提供成员变量的值
    //this关键字:区分局部变量和成员变量,
    //不加this:就近原则:加表示成员位置的变量
    public void SetName(String name){

        this.name=name;
    }
    public String GetName(){
        return name;
    }

    public void SetAge(int age){
        this.age=age;
    }
    public int GetAge(){
        return age;
    }

    public void SetGender(String gender){
        this.gender=gender;
    }
    public String GetGender(){
        return gender;
    }
    //行为
    public void sleep(){
        System.out.println("女朋友在睡觉");
    }
    public void eat(){
        System.out.println("女哦朋友在吃饭");
    }
}
package text;
//对象的创建与构造
public class GirlFrienf {
    public static void main(String[] args) {

        girl gf1=new girl();//创建对象
        gf1.SetName("肘子");
        gf1.SetAge(18);
        gf1.SetGender("大帅哥");

        System.out.println(gf1.GetName());
        System.out.println(gf1.GetAge());
        System.out.println(gf1.GetGender());

        gf1.sleep();
        gf1.eat();
    }
}

30c5b6a8463c45e18028c2e27574e94c.png

4,构造方法

构造方法也叫作 构造器,构造函数。

作用:在创建对象的时候给成员变量进行赋值(初始化)的。

格式:

      修饰符 类名(参数){

            方法体;

      }

特点:

     1,方法名与类名相同,大小写也要一致

     2,没有返回值类型,连void都没有

     3,没有具体的返回值(不能由return带回结果数据)

执行时机:

    1,创建对象的时候由虚拟机调用,不能手动调用构造方法

    2,创建一次对象,就会调用一次构造方法

构造方法注意事项:

   ① 定义:

       系统会默认提供无参构造方法,但当你定义了有参构造,系统将不会提供无参构造

   ② 重载:

      带参构造方法,和无参构造方法,两者方法名相同,但参数不同,这叫做构造方法的重载

   ③ 推荐的使用方式

      无论是否使用,都手动书写无参构造,和带全部参数的有参构造方法

38c606a3fd7e40af956fd9ae849cca77.png

package text;
//定义一个类
class girl{
    //属性(成员变量)
    private String name;
    private int age;
    private String gender;
    
public girl(String name,int age,String gender){
        this.name=name;
        this.age=age;
        this.gender=gender;
}
    
    public void SetName(String name){

        this.name=name;
    }
    public String GetName(){
        return name;
    }

    public void SetAge(int age){
        this.age=age;
    }
    public int GetAge(){
        return age;
    }

    public void SetGender(String gender){
        this.gender=gender;
    }
    public String GetGender(){
        return gender;
    }
    //行为
    public void sleep(){
        System.out.println("女朋友在睡觉");
    }
    public void eat(){
        System.out.println("女哦朋友在吃饭");
    }
}
package text;
//对象的创建与构造
public class GirlFrienf {
    public static void main(String[] args) {

        girl gf1=new girl("肘子",18,"大帅哥");//创建对象

        //girl gf2=new girl();//没有定义有参构造不会报错

        //gf1.SetName("肘子");
        //gf1.SetAge(18);
        //gf1.SetGender("大帅哥");

        System.out.println(gf1.GetName());
        System.out.println(gf1.GetAge());
        System.out.println(gf1.GetGender());

        gf1.sleep();
        gf1.eat();
    }

快捷键:alt+insert

全参构造方法:alt+insert---->Generate---->Constructor---->长按shift+点击最后一个变量

插件ptg:

5,java内存分配介绍

6,this关键字

this作用:区分局部变量和成员变量,不加this:就近原则;加this:表示成员位置的变量

成员变量:类中,方法外

局部变量:方法内,方法申明上

this的本质:代表方法调用者的地址值

方法:method

调用者:s

标签:java,String,对象,gender,void,gf1,public,name
From: https://blog.csdn.net/2301_80250542/article/details/136921067

相关文章

  • 【JavaWeb】Day19.Vue组件库Element——常见组件
    一.Element常见组件-表格Table表格:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。首先打开官网找到表格(Element-Theworld'smostpopularVueUIframework)以带边框表格为例,点击显示代码把代码复制到自己的vue项目中点击npm脚本运行,......
  • 【JavaWeb】Day18.Vue组件库Element
    什么是ElementElement:是饿了么团队研发的,一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库。组件:组成网页的部件,例如超链接、按钮、图片、表格、表单、分页条等等。官网:Element-Theworld'smostpopularVueUIframeworkElement快速入门安装ElementUI......
  • Java语言程序设计实验题目:编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出
    题目描述编写Java程序统计一篇英文文档中各单词出现的次数,并按单词出现的频率由高到低进行输出。例如:文档“HellowordHello”的统计结果为: Hello:2次 word:1次思路分析1.处理文档:先用nextLine()将文段输入,存储在字符串file,再调用split()方法将字符串分割成一个......
  • 【javaWeb &第三篇】Vue快速入门
    VUEvue是一套前端框架,免除原生的js的DOM操作,简化书写基于MVVM(model-view-viewmodel)思想,实现数据的双向绑定,将编程的关注放在数据上。什么是框架:框架相当于一个半成品,是一套高效的代码模板,基于框架开发更加的高效VUE数据绑定模型:model层中存在着对数据的处理,vi......
  • java常用的几个工具类
    org.apache.commons.io.IOUtilscloseQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:转换IO流、Uri、byte[]为Stringcopy:IO流数据复制,从输入流写到输出流中,最大支持2GBtoByteArray:从输入流、URI获取byte[]write......
  • Java练手游戏--俄罗斯方块
    Java基础小练手游戏项目:俄罗斯方块简单版使用Java实现俄罗斯方块大概思路:界面设计:使用JavaSwing或JavaFX创建游戏窗口和用户界面。创建一个主窗口类(如GameFrame.java),负责设置窗口大小、标题等属性。设计游戏面板(如GamePanel.java),用于绘制游戏区域、下一个方块预览区、得......
  • 【附源码】JAVA计算机毕业设计音乐豆瓣(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展,音乐作为人们日常生活中不可或缺的一部分,其获取与分享方式也在不断地变革。传统的音乐获取途径,如购买唱片或到实体音乐店挑选......
  • 在Java项目中使用Redis的五大数据结构应用场景与代码实现
    在Java项目中使用Redis的五大数据结构可以应用于以下场景:1、字符串(String):1、缓存数据:将经常访问的数据存储在Redis中,以减轻数据库的负载。2、计数器:记录用户的访问次数、点赞数等。3、分布式锁:在分布式环境下实现互斥访问,防止并发问题。2、列表(List):1、消息队列:将生产......
  • java中for ( i = 0; i < 3; i++)和for (int i = 0; i < 3; i++)有什么区别
    在Java中,for(i=0;i<3;i++)和for(inti=0;i<3;i++)之间的主要区别在于变量的作用域。for(i=0;i<3;i++):这种形式的循环使用了一个已经在循环之前声明的变量i。这通常发生在变量i在循环之前已经在其他地方被声明和初始化。javainti;//变量i在此处声......
  • Java序列化之Jackson详解
    目录1Jackson1.1Jackson简介1.2为什么选择Jackson1.3Jackson的基本功能1.3.1将Java对象转换为JSON字符串(序列化)1.3.2将JSON字符串转换为Java对象(反序列化)1.4Jackson库主要方法1.5使用Jackson基本步骤1.5.1添加依赖(Maven或Gradle)1.5.2创建Java对象模型1.5.3使用ObjectMa......