笔记《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)


相关推荐

  • 网站访问量的统计_域名访问量统计

    网站访问量的统计_域名访问量统计关于SEO,短期靠流量,长期靠质量(内容)。网站排名很大一部分是靠访问量,那么如何统计网站访问量呢?更重要的是我们的流量对网站排名是有效的。当然你可以写一个js每刷新一次,向数据库更新一次。如何区

  • windows版mysql8.0安装详解

    windows版mysql8.0安装详解windows版mysql8.0安装详解准备去下载一个本地mysql服务器时,突然发现mysql从5.7瞬间升级为8.0了,那还等什么,直接下载下来玩玩先.下载地址:https://dev.mysql.com/downloads/mysql/下载完成后将其解压到自定义目录下,我所有的工具都保存在D:\tools,解压完成后会看见以下目录:随后…

  • (二)缺陷报告「建议收藏」

    (二)缺陷报告「建议收藏」当测试人员发现一个缺陷,需要填写一份“缺陷报告”来记录这个缺陷,并通过这个缺陷报告告知开发人员所发生的问题–缺陷报告是测试人员和开发人员交流沟通的重要工具。案例1:张三在测试案例1-2-1程序时,发现除数为0时程序异常退出,向开发组提交一份缺陷报告。一、缺陷报告的组成:①缺陷编号(DefectID):提交缺陷的顺序②缺陷标题(summary):简明扼要的描述缺陷③缺陷…

  • vcs学习教程

    vcs学习教程vcs学习教程

  • 权限表和菜单表_sqlserver赋予用户表权限

    权限表和菜单表_sqlserver赋予用户表权限selectm.*     fromt_menum     wherem.state=’1′      and((menu_type=1andexists        (select1          fromv_user_menub          wherem.menu_id…

  • Android URLEncoder

    Android URLEncoderbug:发送httpget请求的时出错Causedby:java.lang.IllegalArgumentException:Illegalcharacterinqueryatindex70:….原因:在请求中我用到了不常用的字符,导致调用HttpGet(url)方法时,url参数解析错误解决方法:所以如果法中这种问题,可以在调用下面的方法将参数加密URLEnco

发表回复

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

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