笔记《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用来加删除线

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 嵌入式学习路线「建议收藏」

    嵌入式学习路线「建议收藏」嵌入式学习路线1.前言2.嵌入式硬件方向3.嵌入式软件方向4.嵌入式软件学习路线4.1.打好软件基础4.2.学习ARM体系结构编程4.3.嵌入式系统的构建4.4.嵌入式驱动程序的开发4.5.嵌入式应用程序的开发4.6.综合项目5.总结1.前言嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把嵌入式开发作为自己的职业目标,但是因为嵌入式涉及的知识太多,太杂,太广,很多嵌入式初学者陷入嵌入式知识的海洋中,东学

    2022年6月11日
    30
  • POSTMAN自动生成接口文档_django官方文档

    POSTMAN自动生成接口文档_django官方文档介绍drf-spectacular是为DjangoRESTFramework生成合理灵活的OpenAPI3.0模式。它可以自动帮我们提取接口中的信息,从而形成接口文档,而且内容十分详细,再也不

    2022年7月31日
    4
  • XMLHttpRequest对象的status属性状态吗

    在做异步操作的时候,我们通常需要判断返回的状态码来判断服务器返回的数据是否正常,下面是常见的一些状态码和对应的含义。状态码200服务器正常处理了请求并响应404请求的页面(资源)没有找到403没有权限访问请求的页面(资源)405页面(资源)不接收该请求方式(比如用get请求一个只支持doPost方法的servlet)

    2022年2月24日
    45
  • JAVA正则表达式:Pattern类与Matcher类详解(转)

    JAVA正则表达式:Pattern类与Matcher类详解(转)java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和MatcherPattern一个Pattern是一个正则表达式经编译后的表

    2022年7月1日
    23
  • 小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”

    小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”微信和QQ内置浏览器UA~安卓QQ内置浏览器UAMozilla/5.0(Linux;Android5.0;SM-N9100Build/LRX21V)>AppleWebKit/537.36(KHTML,likeGecko)Version/4.0>Chrome/37.0.0.0MobileSafari/537.36V1_AND_SQ_5.3.1_196_YYB_D>QQ/5.3.1.2335NetType/WIFI安卓…

    2022年6月7日
    40
  • vmware虚拟机重装系统_ubuntu下安装虚拟机

    vmware虚拟机重装系统_ubuntu下安装虚拟机VMware下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html下载之后按步骤安装即可。安装完成后需要密钥,这里给出VMwareWorkstationPro16的密钥:YF390-0HF8P-M81RQ-2DXQE-M2UT6ZF71R-DMX85-08DQY-8YMNC-PPHV8密钥输入完成就可永久使用。ubuntu:首先下载Ubuntu的镜像,我下载的是ubuntu

    2025年11月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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