查看: 48689|回复: 1853

java心得,2016年1月20日10:42:23再次修正,

[复制链接]
  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

    发表于 2016-1-16 16:06:50 | 显示全部楼层 |阅读模式
    本帖最后由 xiaoye 于 2016-1-19 10:42 编辑

    最近闭关自学java,在学的过程的发现很爽,当然也碰到过一下难点一点。

            由于自学过C语言以及C++编程环境问题,都是分分钟解决的,在不懂,强大的中国网民,相信百度可以找到答案的。

            而我感触较为深刻的是,在学习C语言的过程中,非常艰苦,但最终还是拿下它,虽说不能开发出绚丽的,功能强大的程序,但基本的编程思想和编码手法倒是学了很多,然而我我也想过用C语言结合API研究,可惜的是能用的能找到的资料非常少,还有就是微软平台上开发的机制和原理都不懂,于是学习完基础基本上都没闭关学习它的函数库。

            前段时间,接触c++,发现c++独有的类,以及复杂的写法,等等之类的知识,学完后,发现这跟c语言非常相似。觉得它非常之复杂,然而在我接触java后,突然灵光一闪。
            原来是这样,嗯,一种莫名的顿悟,使自己接受c++这种独特的风格,也心里觉得这是一件很自然的写法及写法的设计设计理念。

            当然很多人看到这,懂得话肯定想说,c++的面向对象为什么不讲?其实当你认识它们后,你会发现,C语言也可以写面向对象的,比如,c++用类这种方式,但C语言就不能用函数吗?
            函数嵌套,外面的函数就定义变量,将变量地址或引用到里面的函数,在用里面的写操作,这不是和类的一样的吗?只是样的写法在C语言中,调用和处理时候麻烦罢了。

            因而别人说,学编程建议先学C语言,当然这不是强制一定。
           

            为了丰满帖子,发了一段练习的代码,以示屌屌!

            函数嵌套,外面的函数就定义变量,将变量地址或引用到里面的函数,在用里面的写操作,这不是和类的一样的吗?
            这句话的解释:(代码没测试)
           
    [C] 纯文本查看 复制代码
    //C语言的写法
    # include <stdio.h>
    int rootA(int i, int k);
    int rootB(int *i,int *k);
    
    int main(void)
    {
    	
    	printf("%d",rootA(1,2);
    	return 0;
    }
    
    int rootA(int i, int k)
    {
    	int i;
    	int k;
    	
    	rootB(i,k);
    	return 0;
    }
    
    int rootB(int *i, int *k)
    {
    	return (*i + *k);
    }


    [Java] 纯文本查看 复制代码
    //java写法,没有初始化
    class rootA{
    	int i;
    	int k;
    
    	int rootB()
    	{
    		return (i+k);
    	}
    };
    public class HK_student {
    	
    	public static void main(String[] args){
    		
    		rootA stu = new rootA();
    		System.out.printf("%d",stu.rootB());	
    	}
    }
    


    补充:
            事实上对知识点的理解上,我是理解清楚的,我想表达的意思是,他们的功能是实现两数相加,这是没问题的。我泪奔啊。
            而在我理解JAVA,它有个类rootA里面有个方法rootB,rootB在内存上分配给代码区,两个变量分配给栈,重用方法,分配对象调用。
            而c语言通过函数嵌套方式实现,同样的变量分配到栈,函数(忘记放哪了)类似于JAVA,说他们一样的(内存理解方面,上面的意思)不为过,这也是我写上面两段代码的原因。
            但思想上的肯定是JAVA较为合理。最后我想说的是,他们的实现效果相同,同时也说明了c语言可以这样调用实现面向对象,如果真的让他面向对象,c语言本身都没有这本事,只能说类似,但可以使用自己动态分配内存,实现对象的方式,也是可以的。
            避免误人子弟:
                                    上面的理解:C语言的函数内嵌,java普通方法调用即可。

            以上是一人的观点。

            更正,2016年1月20日10:39:08:
            上面红色部分改为:两变量分配到堆中。
            C语言实现动态分配,可以使用函数malloc()

           
           
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-16 20:03
  • 签到天数: 116 天

    [LV.6]常住居民II

    发表于 2016-1-16 16:51:15 | 显示全部楼层
    看了上面的说法,建议先用清楚C++的类和函数的定义。如果你说C++的类和C语言的结构体相似,这个还可以接受,但是说类和函数相似,这个就不可思议了

    点评

    理解错我的意思了,我这里是说,C语言可以用面向过程的理念去写,举了例子。  详情 回复 发表于 2016-1-16 17:06
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-1-16 17:06:18 | 显示全部楼层
    冰琥珀 发表于 2016-1-16 16:51
    看了上面的说法,建议先用清楚C++的类和函数的定义。如果你说C++的类和C语言的结构体相似,这个还可以接受 ...

    理解错我的意思了,我这里是说,C语言可以用面向过程的理念去写,举了例子。

    点评

    写好了,我说的是代码的意思,比较两个的代码。原理过程不一样,但思想是一样的  详情 回复 发表于 2016-1-16 18:28
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-1-16 18:28:22 | 显示全部楼层
    xiaoye 发表于 2016-1-16 17:06
    理解错我的意思了,我这里是说,C语言可以用面向过程的理念去写,举了例子。 ...

    写好了,我说的是代码的意思,比较两个的代码。原理过程不一样,但思想是一样的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-16 19:30:28 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-16 20:03
  • 签到天数: 116 天

    [LV.6]常住居民II

    发表于 2016-1-16 20:36:17 | 显示全部楼层
    去好好看看类的概念,好好理解啥是对象,然后再去看你上面的代码

    点评

    为什么要纠结我呢,反正这是我个人的观点吧了。有用之者当用。  详情 回复 发表于 2016-1-16 20:54
    早已熟烂  详情 回复 发表于 2016-1-16 20:47
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-1-16 20:47:41 | 显示全部楼层
    冰琥珀 发表于 2016-1-16 20:36
    去好好看看类的概念,好好理解啥是对象,然后再去看你上面的代码

    早已熟烂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-11-4 00:00
  • 签到天数: 325 天

    [LV.8]以坛为家I

     楼主| 发表于 2016-1-16 20:54:32 | 显示全部楼层
    冰琥珀 发表于 2016-1-16 20:36
    去好好看看类的概念,好好理解啥是对象,然后再去看你上面的代码

    为什么要纠结我呢,反正这是我个人的观点吧了。有用之者当用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-1-16 20:03
  • 签到天数: 116 天

    [LV.6]常住居民II

    发表于 2016-1-16 22:07:32 | 显示全部楼层
    不是纠结,而是你自己都不理解,然后这样发表出来,会误人子弟的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-9-11 15:40
  • 签到天数: 425 天

    [LV.9]以坛为家II

    发表于 2016-1-16 22:09:11 | 显示全部楼层
    不是吧,第一个是函数调用函数,第二个java的是对象调用函数,虽然这里表面显示结果一样,但是完全不一样。。类里面可以包括这些函数,我们称之方法,必须这个类生成的对象才能调用这个方法,而你第一个c语言函数和函数之间的关系是平级。但是那个java的确是附属关系,机理完全不一样。其实面向对象没有那么 难理解的
    回复 支持 1 反对 0

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-4-27 05:15 , Processed in 0.056203 second(s), 15 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部