笔记《Thinking in Java》第2章 一切都是对象[通俗易懂]

笔记《Thinking in Java》第2章 一切都是对象[通俗易懂]第二章一切都是对象1.数据可以存在哪寄存器。因为它在CPU内部,所以最快。但是Java无法直接控制它。栈。在RAM上,但是,CPU可以通过栈指针快速的分配存储,向下就分配新内存,向上就释放内存,所以速度很快。代价是,Java系统必须确切的知道数据在栈里的生命周期,所以灵活性有限。Java的对象引用存在这。堆。也是在RAM上,不过跟栈比,编译器不用知道数据在堆里的生命周期,所以在堆里分配…

大家好,又见面了,我是你们的朋友全栈君。

第二章 一切都是对象

1.数据可以存在哪

  • 寄存器。因为它在CPU内部,所以最快。但是Java无法直接控制它。
  • 栈。在RAM上,但是,CPU可以通过栈指针快速的分配存储,向下就分配新内存,向上就释放内存,所以速度很快。代价是,Java系统必须确切的知道数据在栈里的生命周期,所以灵活性有限。Java的对象引用存在这。
  • 堆。也是在RAM上,不过跟栈比,编译器不用知道数据在堆里的生命周期,所以在堆里分配存储很灵活,代价是更耗时。Java所有的对象存在这。
  • 常量存储。常量值直接放在程序代码内部,这样也是安全的。
  • 非RAM存储。常见的两种:流对象和持久化对象。前者是字节流,后者是存在磁盘上。

2.基本类型

基本类型存在栈里面,这样这个变量就直接存储“值”了,比起对象来更轻量,更快速。

基本类型 大小 范围 最大值 包装类
boolean Boolean
byte 1字节 -128 127 Byte
char 2字节 Unicode0 Unicode65535 Character
short 2字节 -32768 32767 Short
int 4字节 -2,147,483,648 2,147,483,647 Integer
long 8字节 约-900亿亿\9*10^18 约900亿亿\9*10^18 Long
float 4字节 Float
double 8字节 Double
void Void

浮点数与整型数转换时,注意精度丢失问题。float精度没有int高(?)。

关于浮点数精度及表示法,后续补充。

BigInteger和BigDecimal可以表示任意精度及大小的整数和定点数。

Java创建数组时,其实就是创建了一个引用数组。数组存不了基本型,而是包装类。后续详解。

3.对象作用域

java的作用域是大花括号,并且有闭包。以下程序,C++里可以,但Java不合法:

{ 
   
    int x = 12;
    { 
   
        int x = 96;	// Illegal
    }
    
}

4.类

类属性:基本类型会被初始化。引用类型初始化为null。

方法属性:不会被初始化。如果要使用,编译器会强制要求你初始化。

	void method(int i, String str){ 
   
		int method_a;
		String method_str;
		
		System.out.println(i);
		System.out.println(str);
		
		System.out.println(method_a);	// Illegal
		System.out.println(method_str);	// Illegal
		
		System.out.println(clazz_i);
		System.out.println(clazz_a);
	}

可以通过类名直接调用类方法和字段(最佳实践),也可以通过对象调用类方法(少用)。

	static String clazz_a = "clazz_a";
	static void classMethod() { 
   
		System.out.println("Class method invoke!");
	}

	new Test201957().classMethod();	// Class method invoke!
	System.out.println(new Test201957(1).clazz_a);	// clazz_a

5.其他

java.lang包是默认导入到程序的,无需显示导入。

6.注释和嵌入文档(了解即可)

private的javaDoc会被忽略

javaDoc也可以嵌入html来使用

@deprecated用来加删除线

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156718.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Tcp是什么?_跟你说完了

    Tcp是什么?_跟你说完了之前受到Wireshark——从此我就喜欢上了它,就像是学武之人得到了一把称手好剑的启发,带着回顾、深入TCP的目标,回顾了《TCP-IP协议卷1》《图解TCP/IP协议》,受益匪浅。写这篇文章,希望自己能对TCP形成一个系统性的知识沉淀,也希望能给初学者一个基本概念的认识,读完本文再深入书籍,应该也是不错滴。学习路径:1、阅读《TCP-IP协议卷1》的TCP章节(相关知识非常全面,各种算法…

  • iterator迭代器详解_迭代器是什么

    iterator迭代器详解_迭代器是什么迭代器 Iterator动机模式定义实例结构要点总结笔记动机在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象.我们希望在不暴露其内部结构地同时.可以让外部客户代码透明地访问其中包含地元素;同时这种”透明遍历”也为”同一种算法在多种集合对象上进行操作”提供了可能.使用面向对象技术将这种便利机制抽象为”迭代对象”为”应对变化中地集合对象”提供了一种优雅地方式模式定义提供了一种方法顺序访问一个聚合对象中地各个元素,而又不暴露(稳定)该对象地内部表示.实例结构要点总结迭代抽象

  • SVN报Previous operation has not finished; run ‘cleanup’&

    SVN报Previous operation has not finished; run ‘cleanup’&

  • hql查询语句用法详解_sql add语句

    hql查询语句用法详解_sql add语句HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的。 不带参数的查询,语句是“fromPOJO”的形式,其中POJO即为持久化类名称Queryquery=session.createQuery("fromUser");带参数的查询接口Query提供了…

  • 有一种设计风格叫RESTful

    有一种设计风格叫RESTful

  • eclipse SVN插件的缓存清理[通俗易懂]

    eclipse SVN插件的缓存清理[通俗易懂]工具原料:SVN客户端;windowxp;eclipse中的缓存清理主要有: eclipse清理网页缓存; eclipse清理XSD文件缓存; eclipse清理svn账号缓存; 情况一:eclipse清理网页缓存。修改了代码多次刷新页面[已经清除过浏览器缓存]后页面调试仍显示源代码解决步骤:①停止tomcat的运行;②在eclipse中的Servers下找到并选中tomcat,右键选择”clean…”;③重新启动tomcat,刷新页面;④设置b

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号