zoukankan      html  css  js  c++  java
  • 我想和你们说说java和C++___C加加

    头痛头痛之一:

    java里面,本质上来说,一个类是一个程序员定义的类型,类是一种引用类型(reference type),这意味着该类类型的变量都可以引用该类的一个实例。从表面上,对象引用变量中似乎存放了一个对象,但事实上,它只是包含了对该对象的引用。严格来讲,对象引用变量和对象是不同的,对象(new Person()),对象引用变量(Person p)。但大多数情况下,这种差异是可以忽略的。因此,可以简单地说p是一个Person对象,而不用冗长地描述说,p是一个包含对Person对象引用的变量。-----java基础篇P278

    所以,Person p;   p.a = 2; 这样是不行的,因为这个时候p还没指向任何内存。是null

    所以需要Person p = new Person();

    相反,C++直接 Person p; 即可调用p.a = 2;

    头痛头痛之二:

    java里面的方法,

        public void fuck(final StringBuilder str) {
            str.append("haha");
        }

    这样的final只是说,不能改变str,也就是str不能指向其他地方,还是可以修改它指向的内容的。比如上面是ok的,会修改的

    但是C++

    void fun(const char * str) 

    就已经表明,str的内容是不可变的,至于指向,本来就是值拷贝,改变了对我影响不到的。只是在函数中临时改变

     再比如

    void fun(char * const str) {
        str[0] = '0';
    }

    指针常量,表明这个指针是一个常量,不可以再改变指向了,但是这个时候还是可以修改它指向的那块内存的值的。

    注意:这个时候那块内存需要存在,如果你的是char * str = "liuweiming",这样它一更改还是会报错的,因为不能更改字符串常量

    字符串常量保存在代码区

    所以很大的区别就是final string str,表明的和const char * str不同

    void fun(char * const str) {    str[0] = '0';}

    头痛头痛之三、

    java中的类,默认类型,也就是什么都不写,也不算private的,只是说明其是包私有而已,同个包的还是能访问。

    C++/C#中的类,默认类型,是private的,就是什么都不写,就不能访问了。

  • 相关阅读:
    安卓自动化测试添加用例执行回放
    【十二省2019】异或粽子
    【BZOJ4260】Codechef REBXOR
    【JSOI2015】字符串树
    【HAOI2017】供给侧改革
    【NOI2018】你的名字
    【十二省2019】字符串问题
    【LOJ#6041】事情的相似度
    【SP8093】JZPGYZ
    【BZOJ1396】识别子串
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/7815933.html
Copyright © 2011-2022 走看看