[Thinking in Java]这些必须先了解
2.基本概念和认识
2.1 Java引用
Java中一切皆是对象,一切对象实例的标识符号(对象名称)都只是对象的引用。
2.2 对象的创建
- 通过new关键字创建,但是要注意基础类型和String类型的特殊之处并且还有常量池的概念。
- 放在哪里:
- 寄存器:位于CPU内部,这是存取最快的区域,但是Java并不能直接控制,程序运行过程中也并不能感知到这一块的分配和操作情况;
- 堆栈:位于RAM,存放基础类型变量数据和对象、数组的引用,但是对象本身并不在堆栈中,而是在堆中或常量池中;
- 堆:位于RAM,存放new出来的对象;
- 静态存储:位于RAM,存放static变量;
- 常量存储:可以放在ROM,存放public final static变量;
- 非RAM存储:硬盘等永久存储空间,存放持久化对象。
- 存取速度:寄存器>堆栈>堆>其它
- 基本类型:基本类型不是创建对象并放在堆中而是直接将值放在堆栈中,这样更加高效,这些基本类型有:
基本类型 大小 最小值 最大值 包装类 boolean - - - Boolean char 16bit unicode 0 unicode 216 - 1 Character byte 8bit -128 +127 Byte short 16bit -215 +215 - 1 Short int 32bit -231 +231 - 1 Integer long 64bit -263 +263 - 1 Long float 32bit IEEE754 IEEE754 Float double 64bit IEEE754 IEEE754 Double void - - - Void
5.数组:创建数组就等于创建了一个引用数组,数组里保存每个元素对象的引用。
2.3 GC
不需要程序员主动释放内存。
2.4 类
- class关键字。
- 默认值:类中基本类型的成员变量,如果没有初始化,他们将被初始化为0(泛),但是局部变量未初始化却会在编译阶段报错。
2.5 方法参数返回值
ReturnType methodName(/* Argument list */) {
/* Method body */
}
2.6 Java程序
- 包命名规范:域名反转,解决冲突;
- import关键字:告诉编译器将要引用的类的位置;
- static关键字:方法、成员变量、域
[Thinking in Java]这些必须先了解的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- ueditor工具栏更改按钮的默认操作
ueditor 上的 image 按钮,默认有一个图片选择工具. 但是我想把他去掉,用上自己写的图片选择功能. 原来使用cleditor 是可以给按钮自定义一个函数.但是在ueditor就没有找到可以 ...
- windows上传代码到github
上传代码到github上有很多种方法,在这里我介绍一种比较简单的一种.工具嘛,越简单越好用啊. 1.首先下载github在windows下的客户端 下载地址:https://desktop.githu ...
- layoutSubviews 与 drawRect
layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————- - (voi ...
- hdu 2066
ps:我天...之前看了迪杰斯特拉..现在这题要用到floyd..就是先建一个图,然后从列开始遍历,每列里遍历行,行又对应每列... 从A列开始遍历每行,比如遍历到B,这时候B->A知道是2,接 ...
- windows下Python shell代码自动补全
Unix下实现如题功能用下面的代码: import rlcompleter, readline readline.parse_and_bind('tab: complete') 但readline不能 ...
- asp.net中的GridView控件的部分知识点
<PagerTemplate> <br /> <asp:Label ID="lblPage" runat="server" Tex ...
- ubuntu 下更新PHP版本 ZT
sudo add-apt-repository ppa:ondrej/php5 如果报错 add-apt-repository: command not found add-apt-repositor ...
- 设置vim默认参数 例如设置默认背景颜色
因个人喜好问题,本人使用vim的时候喜欢将背景颜色设为dark. 但是每次打开一个vim的时候都要重新设置一次,感觉非常麻烦. 总要输入[Esc] :set bg=dark很不方便 粗暴的办法是直接进 ...
- IntelliJ IDEA注册码
1.打开IJ,help选项下的register 2. 选择Activation code 将注册码粘到内容框里,点击ok即可 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QT ...
- 实时控制软件设计 第二次作业 myRobot
#include<iostream> #include <Eigen/Dense> #include <math.h> #include <vector> ...