在对象的内存分配上与c++有区别:

C++:
#include <iostream>
#include <string>

class Person{
    private:
        std::string name;
        int age;

public:
        void  setAge(int age){
            this->age = age;
        }
        
        void setName(std::string name){
            this->name = name;
        }

int getAge(){
            return this->age;
        }

std::string getName(){
            return this->name;
        }
};

int main(){

Person per;

per.setAge(10);

std::cout<<per.getAge()<<std::endl;

return 0;
}

java:

class Person{
    private int age;
    private String name;

void setAge(int age){
        this.age = age;
    }

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

int getAge(){
        return this.age;
    }

String getName(){
        return this.name;
    }
}

public class ObjectTest{

public static void main(String args[]){

Person per = null;
        per = new Person();

per.setAge(10);
        
        System.out.println(per.getAge());

}
}

 
程序详解:
1、定义好一个类
2、为定义好的类实例化对象
· 声明对象:在栈内存中开辟空间
· 实例化对象(为一个对象开辟空间),使用关键字new完成。只要有new关键字就表示在堆内存中开辟空间,在堆内存中保存各个对象的属性。而方法是保存在全局代码区里面滴。

3、通过对象.属性为类中的属性赋值,通过对象.方法()调用类中的方法。
我们发现,如果我们没有对对象开辟堆内存空间的话,程序执行会报NullPointerException错哈~,如果我们发现出现这个错误,我们排错时就检查对象有没被实例化。

NullPointerException : 空指向异常,只要是没有堆内存引用的对象,直接调用对象访问属性或方法的时候都会出现空指向异常。此异常会伴随你的开发人生。

总结:

1、类与对象的关系

java:

一个文件中只能有一个public类,此对类名要跟文件名一致。

默认类中属性public;无析构函数。

C++:Struct 默认public,Class默认private;

· 类是对象的模板,对象是类的一个实例
2、对象的创建

c++:可栈,可堆,带指针!

java:无指针,栈中分配内存无效,必须要在堆中分配

·声明对象:在栈内存中声明;类名称 对象名称 = null ;
·实例化对象:使用new在堆内存中开辟空间,保存属性;对象名称 = new 类名称() ;
3、对象的引用传递
4、垃圾的产生。

[零基础学JAVA]Java SE面向对象部分.面向对象基础(01)的更多相关文章

  1. 零基础学python习题 - Python必须知道的基础语法

    1. 以下变量命名不正确的是(D) A. foo = the_value B. foo = l_value C. foo = _value D. foo = value_& 2. 计算2的38 ...

  2. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

  3. 零基础学Java第五节(面向对象一)

    本篇文章是<零基础学Java>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...

  4. 零基础学Java第六节(面向对象二)

    本篇文章是<零基础学Java>专栏的第六篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 继承 创建一个Person类 我们 ...

  5. 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现

    088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...

  6. 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类

    099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...

  7. 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二

    101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...

  8. 零基础学Java,PayPal技术专家手把手带你入门

    在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...

  9. 零基础学Java第三节(基本输入输出)

    本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...

  10. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

随机推荐

  1. 通过Jscript中@cc_on 语句识别IE浏览器及版本的代码

    激活条件编译支持. @cc_on 备注 @cc_on 语句激活脚本引擎中的条件编译. 强烈推荐在注释中使用 @cc_on 语句,以使不支持条件编译的浏览器将您的脚本视为有效语法而接受它: /*@cc_ ...

  2. Java虚拟机知识 总结 记录

    总结了自己这两天掌握的一些JVM相关的知识.方便自己复习. jvm全称是Java Virtual Machine(java虚拟机).它之所以被称之为是“虚拟”的,就是因为它仅仅是由一个规范来定义的抽象 ...

  3. WEB项目构建优化之自动清除CSS中的图片缓存

    在web项目构建发布时,经常遇到css中图片的修改优化,那么如何清除图片的缓存成为必须要解决的问题.曾经有过傻傻的方法就是直接在图片后面添加随机数.今天主要是从构建自动化方式来解决这个问题,提高开发及 ...

  4. Appium移动端自动化测试-安卓真机+模拟器启动

    一.环境准备 appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需对应,否则执行脚本可能出错,我用的是这两个版本) macOs版本10.14.1(ap ...

  5. javascript高性能

    我在<javascript高性能> 这本书里面读到这个文章,所以做一下学习笔记,供大家一块学习: 无阻塞脚本的概念什么? 为什么要用无阻塞脚本? 如何实现无阻塞脚本,和每个实现方式应该注意 ...

  6. maven配置编译器的版本

    发现每次启动idea时,项目里很多红色错误,都是的编译器版本不对,每次都要手动修改. 其实在pom里把默认编译器版本加进去就好了. <build> <plugins> < ...

  7. 前端标注软件-pxcook像素大厨使用心得

    我们在日常开发过程中,设计师给提供的UI图,经常需要标注尺寸,有时候设计师难免会遗漏标注,这样就会大大的增加我们的沟通成本,因此,使用一款好用的标注软件就尤为重要,我推荐这款标注软件---pxcook ...

  8. POI 2000 ------Stripes

    Stripes Time Limit:1000MS Memory Limit:30000KBTotal Submit:94 Accepted:43 Description Stripes is a t ...

  9. 数据上下文中的AddOrUpdate方法

    AddOrUpdate是扩展方法,需要添加引用  using System.Data.Entity.Migrations;

  10. phpmyadmin登录报错crypt_random_string requires at least one symmetric cipher be loaded 解决方法

    通过phpmyadmin登陆时提示以下错误: phpmyadmin crypt_random_string requires at least one symmetric cipher be load ...