在对象的内存分配上与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. 并发编程之synchronize

    synchronized是Java中的关键字,是一种常用的线程同步锁. 用法 注意:在理解synchronized时,要知道一个核心点,synchronized锁定的不是代码,而是对象.使用synch ...

  2. MySQL的优化(大纲)

    参考:http://www.cnblogs.com/villion/archive/2009/07/23/1893765.html#3031899 MySQL的优化,主要可以考虑以下四方面: 1.数据 ...

  3. Android Studio修改程序包名

    我也是在网上看到的,并且这个方法只能这么修改:cn.example.xxx修改为cn.example.yyy ,修改到根目录下... refactor---rename修改  然后clean,buil ...

  4. 判断img图片是否加载成功

    上班之余,记录一下工作中遇到的有趣问题... 事情是这样的...在做一个内嵌H5的app时,有一个“个人名片”页面...要求:如果后台接口有给头像的图片链接就用他们给的,如果没给,前端给个默认头像.. ...

  5. [javaEE] JDBC快速入门

    JDBC:Java Data Base Connectivity java数据库连接 1.组成JDBC的两个包:主要是接口 java.sql javax.sql 2.相应JDBC的数据库实现 在tom ...

  6. java_对象序列化、反序列化

    1.概念 序列化:将对象转化为字节序列的过程 反序列化:将字节序列转化为对象的过程 用途: A:将对象转化为字节序列保存在硬盘上,如文件中,如文本中的例子就是将person对象序列化成字节序列,存在p ...

  7. 模块—— 序列化模块、random模块、os模块 、 sys模块、hashlib模块、collections模块

    今天我们来说说Python中的模块: 第三方模块 可以下载/安装/使用 第一步:将pip.exe 所在的目录添加到环境变量中第二步:输入pip第三步:pip install 要安装的模块名称  #pi ...

  8. poj 1679 The Unique MST (判定最小生成树是否唯一)

    题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total S ...

  9. C# 修改GroupBox的边框颜色和字体颜色

    改变GroupBox边框和的颜色 private void groupBox_BasicInformation_Paint(object sender, PaintEventArgs e) { e.G ...

  10. PeekMessage&GetMessage

    原文:http://www.cnblogs.com/faceang/archive/2010/05/25/1743757.html PeekMessage与GetMessage的对比相同点:PeekM ...