【Java学习】2. Basic Java Grammar

2.1 Data Type

2.1.1 基本数据类型

数值类型:byte, short, int, long, float, double
其它类型:char, boolean
(无unsigned类型)

char

  • 一个char有两个字节;采用UCS-4字符集,UTF-8编码方案;
  • charset(字符集):将字符与数值一一对应;
  • ASCⅡ:一个字符对应一个字节的编码;
  • GB2312:一个字符对应两个字节的编码;
  • Unicode:一个字符对应四个字节的编码,但表示时用两个字节,英文编码变为双字节,高字节补零;

2.1.2 引用数据类型

一、JVM内存结构

JVM内存结构

二、Java程序在内存中的位置

person.class 文件

public class person
{
	int age;
	String name;
	void sleep(){};
}
person p1, p2;
  • person.class 被load至内存区时,在方法区(meta space)中创建class类的对象
  • person类的对象p1, p2在Java堆中创建,并由指针指向方法区中class类的对象;
  • object类是所有类的基类,object 类中有getclass() 方法,可以找到对象所属的类;
局部变量成员变量
基本数据类型变量名和值都在方法区变量名和值在堆内存中
引用数据类型变量在方法栈,变量指向的对象在堆变量名和变量名指向的对象都在堆
  • Java堆中有GC,方法区中没有GC,为持久代(Permanent generation);
  • 类的方法在编译后生成一系列指令,放入方法区

2.1.3 Others

一、包装类

  • 8种基本数据类型不是面向对象的,没有对应的类,但每个基本数据类型都有对应的包装类(Wrapper Class)
  • 包装类:Byte, Short, Integer, Character, Long, Float, Double
  • 自动装箱/拆箱(Auto Boxing/Unboxing):8种基本数据类型与其包装类会自动相互转换
  • 包装类是不变类,是不可更改的(Immutable)
  • 为什么使用不变类:
    • 线程安全的,由于不变类的状态在创建后不会发生改变,所以可以进行线程间的数据共享,不需要同步
    • 不变类的instance可以被重复使用(reuse)
  • 类型转换
    • int -> long (true)
    • Integer -> Long (false): Integer类与Long类没有继承关系
    • Integer a = new Long();: 错误

二、Examples

Integer i1 = 12;
Integer i2 = i1;
i2 = 100;
//此时 i1 = 12; i2 = 100;
//即此时有2个对象,因为包装类是不变类
int x=10;
Integer i1 = 10;  //此处有Auto Boxing
Integer i2 = 10;
System.out.println(i1 == i2)
//true
//"=="比较的是地址,即现在只有一个对象(重用)
//当x <= 127时,为true,有一个对象;当x > 128时,为false,有两个对象

三、静态方法

public class Demo
{
	public static void f(){}
	public void g(){}
}

在调用时,

Demo.f();
//静态方法在实现时没有this参数,不会管是由谁调用的,与类的实例无关
new Demo().g();
//非静态方法在实现时会将this参数传入,aload_0[this],将Demo的对象传入g()方法中

四、import和package

  • import
  • import java.io.File
  • import java.lang.*会自动加上,不用写
  • package
  • Package a.b.c
  • 包与目录是相结合的,控制访问范围
  • 当没有访问范围修饰符时,限定在包内访问

五、其它

  • 比较
    • == 比较的是物理上的,即比较的是地址
    • 若要比较内容,则需重写equals()方法
  • Javadoc Comments
    • /** */
    • Java.doc会将其转换为HTML文件
  • 文件名
    • 一个Java文件只能最多有一个public class,文件名就是类名
    • 若无public class,也可任取一个top level的类名
    • top level的类只能用public或无
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值