首页 > 编程语言 >Java基础语法五

Java基础语法五

时间:2024-03-14 20:29:23浏览次数:16  
标签:Java name 对象 基础 语法 score Student public String

面向对象基础

(1)对象是什么

(2)对象在计算机中的执行原理

  • 每次new Student(),就是在堆内存中开辟一块内存区域代表一个对象
  • 新对象s1变量里面记住的是新对象的堆内存地址,也就是说s1是一个引用变量

注: 调用每个对象的变量 是 调用每个对象在堆内存存储的变量值

        调用每个对象的方法 是 通过每个对象里存储的类的地址找到方法区的对象模板里的方法

(3)类和对象的一些注意事项

注:java存在自动垃圾回收机制,会自动清除掉垃圾对象

(4)this

this是一个变量,可以在对象的方法中,拿到当前对象

调用s1对象的方法,返回的是s1对象在堆内存的地址

  • this主要用来解决:变量名称冲突的问题
public void printPass(double score){
//this.score指的是所在对象的score变量,score指这个函数的形参
    if(this.score > score){
        System.out.println("yes");
    }
    else{
        System.out.println("no");
    }
}

注:对象的方法里在编译之后会加一个形参this,指向的就是当前对象

(5)构造器

构造器是在创建对象时,会被自动调用的方法

构造器的名字必须和所在类的名字一致,并且不能写返回值类型

public class Student {
    public Student(){
        System.out.println("调用无参构造器");
    }
    
    public Student(String name){
        System.out.println("调用有参构造器");
    }
}
public class Test {
    public static void main(String[] args) {
        Student s = new Student("小q");
    }

}

//输出“调用有参构造器”

构造器常见应用场景:创建对象时,同时完成对对象成员变量(属性,即方法)的初始化赋值

public class Student {
    String name;
    int score;
    public Student(String name,int score){
        this.name = name;
        this.score = score;
    }
}
public class Test {
    public static void main(String[] args) {
        Student s = new Student("小q",85);
    }

}

(6)封装、实体JavaBean

一些对象里的对象不应该能被随意赋值,应该用private 这个关键字将它封装起来

public class Student {
    private String name;
    private int score;
    public void setScore(int score){
        if(score>=0&&score<=100){
            this.score = score;
        }
    }
    public int getScore(){
        return this.score;
    }
}
public class Test {
    public static void main(String[] args) {
        Student s = new Student();
        s.setScore(63);
        System.out.println("成绩为" + s.getScore());
    }
}
//输出结果为“成绩为63”

若想要赋值或访问被private封装起来的变量,可以使用set、get思想来操作,set可以给赋值添加条件

在idea里可以自动生成set、get方法,右键,找到generate,点击Getters和Setters,选中要生成的变量

//生成后的样子
public class Student {
    private String name;
    private int score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

在idea还可以自动生成构造器,且可选参数,右键,generateConstructor,选中要传的形参

//生成后的样子
public class Student {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

public class StudentOperator {
    private Student student;

    public StudentOperator(Student student) {
        this.student = student;
    }

    public void printPass(){
        if(student.GetScore()>=60){
            System.out.println("成绩合格");
        }else{
            System.out.println("成绩不合格");
        }
    }
}
//具体操作
public static void main(String[] args) {
        Student s = new Student();
        s.setName("张三");
        s.SetScore(63);

        StudentOperator operator = new StudentOperator(s);
        operator.printPass();
    }

//输出结果“成绩合格”

(7)成员变量和局部变量的区别

标签:Java,name,对象,基础,语法,score,Student,public,String
From: https://blog.csdn.net/qq_21649875/article/details/136691948

相关文章

  • Java高频面试题---MySQL
    一、InnoDB和MyISAM有什么区别?InnoDB和MyISAM是MySQL中比较常用的两个执行引擎,MySQL在5.5之前版本默认存储引擎是MyISAM,5.5之后版本默认是InnoDB,MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。它们主要有以下区别:1、InnoDB支持事务,MyISAM不......
  • C++ error C2143: 语法错误: 缺少“;”(在“*”的前面)
    errorC2143编译错误但是,我在官网的例子上没有找到我所遇见的问题!在此记录一下,问题代码如下:1classtestA1;2classworkclass3{4public:5explicitworkclass();6virtual~workclass();7private:8intM_INT;9......
  • CentOS7升级Java11
    文章目录升级步骤1.查看已安装的jdk:2.删除旧版jdk:3.安装java11-openjdk:总结升级步骤查看当前版本java-version1.查看已安装的jdk:yumlistinstalled|grepjava2.删除旧版jdk:yumremovejava-1.7.0-openjdk*yumremovejava-1.8.0-openjdk*3.安......
  • Java学习记录第十二天
    数组的使用普通的For循环publicclassArrayDemo3{  publicstaticvoidmain(String[]args){    int[]arrays={1,2,3,4,5};​    //打印全部的数组元素    for(inti=0;i<arrays.length;i++){      System.out......
  • Java基础面试题(6)
    76.静态方法和实例方法有何不同?静态方法和实例方法的区别主要体现在两个方面:        在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。        静......
  • 网络编程1 基础概念+Socket编程
    网络编程1基础概念+Socket编程协议概念:协议事先约定好,大家共同遵守的一组规则,如交通信号灯.从应用程序的角度看,协议可理解为数据传输和数据解释的规则;可以简单的理解为各个主机之间进行通信所使用的共同语言.分层模型OSI是OpenSystemInterconnection的缩写,意......
  • Java中的Map集合如何根据key值排序?
    Java中的Map集合如何根据key值排序(HashMap<String,Object>)?Map集合的键(key)默认是按照它们的hashCode排序的,这在有时间不符合业务排序。如果你想要根据Map的key值进行排序,一般以下有几种方法可以实现。方法一:使用TreeMap使用TreeMap类,它会自动根据key的自然顺序或自定义比较器......
  • java Spring boot2.7整合jetcache讲解CreateCache的area属性配置
    上文Springboot2.7整合jetcache远程redis缓存方案我们实现了一个redisjetcache缓存方案我们可以在application文件中的jetcacheremote下再加一组配置就先叫sms我们可以设置CreateCache上的area属性默认值是default这里我们可以修改成我们写的s......
  • HarmonyOS 发送系统通知 基础通知
    harmonyos中提供了各种不同功能的通知来满足我们不同的业务需求本文呢我们先来看最基本的通知它的场景和使用方式最基本的是当应用被切入后台而应用内部发生了一些变化就可以用通知的方式来提醒用户就比如我们微信被切到了后台而这时别人发消息过来了那......
  • 【前端Vue】Vue从0基础完整教程第2篇:day-08【附代码文档】
    Vue从0基础到大神学习完整教程完整教程(附代码资料)主要内容讲述:vue基本概念,vue-cli的使用,vue的插值表达式,{{gaga}},{{if(obj.age>18){}}},vue指令,综合案例-文章标题编辑vue介绍,开发vue的方式,基本使用,如何覆盖webpack配置,目录分析与清理,vue单文件组件的说明,vue通......