java中的基础大合集

原创 2018年04月17日 20:28:15

概述:    本文讲述java的最基本知识,为理解面向对象打下扎实的基础               (慢慢更新)

1:内存分配问题

      1):我们需要把内存模拟出一块块区域,比如一块区域给堆用,一块区域给栈用,以下是内存图    

              从上到下依次是堆,栈,静态区

从这个图可以知道,堆中存放的是实例化的对象;局部变量实在栈中分配的,局部变量就是函数里面的变量。如何区分局部变量:由数据类型  +  变量名  组成,就是局部变量。字符串就是放在第三个区,而函数,if,for等等放在代码区。而静态区存放有static定义的类变量,存放静态成员。

--》要明白的几个问题:既然堆存放实例化对象,就是类似c语言中的malloc动态分配,所以堆是动态分配的,动态分配有程序员手动分配,手动释放。

                                      1:栈不需要手动分配,他在函数终止时会自动释放,所以栈中的函数不能跨函数使用,因为局部变量是在栈中分配的,在局部变量所在的函数终止时会释放内存,所以栈中的函数不能跨函数使用。或者说栈中的局部变量随着方法的消失而消失,这就是局部变量只能在方法中有效的原因。

                                     :2:堆中的函数可以跨函数使用,因为他们的空间是手动释放的。例如a这个函数,b函数里面可以调用a这个函数。你可以想象为在堆中的东西都是共享,共享就是可以相互访问。

                                      3:一知道堆就要想到是动态分配,栈是静态分配。例如:有一个局部变量,马上可以想到它是静态分配的,实例化的对象马上想到它是在堆中,动态分配的。

      2):java程序的执行过程是如何?

           此时有个名为S.java文件,系统解读会将代码分为4块区域,该放哪的就放哪。例如局部变量放在栈中等等。


    3)关于new实例化对象的一些心得,知识

 以下是参考代码: 

                

从代码知道:(1): class A是我们定义的模型,类似于数据类型int型,但是这只是类抽象的,还未生成事物,还未分配内存

                     (2):A aa = new A();可以知道,A是数据类型, aa是局部变量,局部变量存在于内存中的栈中,进一步得知是静态分配的;而new A ()是在堆中动态分配的,new相当于C语言中的malloc函数。

                     (3):类只有用了new才是创建了对象,又称之为实例化对象,没有用new的时候系统还未分配内存,用了new之后系统为其分配内存。实例化了对象才可以使用这个类

                     (4):既然知道了aa是静态分配,new生成的A对象是动态分配了。那么aa保存了动态内存分配对象的地址,也就是说aa这个静态指针变量指向了动态内存中的A对象。aa.i的意思就是静态指针变量指向动态内存中A对象中的i变量。

                       (5):A aa = new A();是在堆中分配一块内存,这块内存里面的i和j变量的初始值是10和20,如果你通过aa.i=80;aa.j=66;这样在堆内存中两个的值就改变成了80和66。

                               内存参考图:


4)待续


三大框架的基础知识

三大框架的基础知识 1,hibernate的工作原理及为什么要用? (1)通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件; (2)由 ...
  • pamguangyou
  • pamguangyou
  • 2016-10-29 16:22:13
  • 3435

java各大公司面试笔试上机汇总大合集下.rar

  • 2011年01月13日 17:13
  • 387KB
  • 下载

java游戏集合

  • 2015年12月14日 21:54
  • 3.31MB
  • 下载

Java视频教程大合集

  • 2016年10月26日 22:30
  • 752B
  • 下载

Java基础之三大特性

前言Java是一种彻底的面向对象编程语言什么是面向对象面向对象是一种思想,是基于面向过程而言,就是说面向对象的功能是通过对象来实现的,将功能封装近对象中,让对象去实现具体细节。特点:1、.将复杂的事情...
  • u011921490
  • u011921490
  • 2015-07-10 09:33:00
  • 576

Java面试大合集

  • 2013年12月16日 11:09
  • 1.08MB
  • 下载

java笔试题大集合及答案(另附各大公司笔试题)

  • 2011年11月20日 23:33
  • 89KB
  • 下载

java8个基本类型

Java数据类型表示范围计算时的自动类型转换 所有的byte,short,char型的值将被提升为int型; 如果有一个操作数是long型,计算结果是long型; ...
  • u011118321
  • u011118321
  • 2017-02-27 13:02:16
  • 711

java面试题大合集(开发者必看)

前言 本文来自百度网络的一篇文章,由于没有答案,现在整理了一些比较好的回答和好的博客,可以自己扩展思路,如果大家有一下面试题的更好的答案,欢迎在评论区留言。以上全部来自网络!此外,我的微信公众号将每...
  • sihai12345
  • sihai12345
  • 2018-03-07 00:41:08
  • 1084

MRP打拼工具大合集

  • 2011年09月13日 19:28
  • 21.76MB
  • 下载
收藏助手
不良信息举报
您举报文章:java中的基础大合集
举报原因:
原因补充:

(最多只允许输入30个字)