Java学习-2. Basic Java Grammar
2019-09-20 22:14
99 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44042270/article/details/101081464
2.1.2 引用数据类型 2.1.3 Others
类型转换
Integer -> Long (false): Integer类与Long类没有继承关系
Javadoc Comments
Java.doc会将其转换为HTML文件
文件名
若无public class,也可任取一个top level的类名
top level的类只能用public或无
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内存结构
二、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 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()方法
/** */
-
一个Java文件只能最多有一个public class,文件名就是类名
相关文章推荐
- 对于初学者学习Java语言的建议[教学]
- 通过高级机器人战斗仿真引擎学习 Java 编程
- 学习Java前的准备。
- Java中文处理学习笔记——Hello Unicode
- Java学习路径(二)书籍篇
- 新手如何学习java
- Java学习之神奇的i=i++
- java的学习网站收藏
- JAVA学习笔记之Collection
- Java学习之神奇的i=i++
- Java学习之对象序列化(二)
- 新手如何学习java
- Java学习从入门到精通[原创]
- JAVA多线程学习初步经典实例
- Java学习从入门到精通
- 学习java心得体会(一)
- 我学习使用java的一点体会(6)
- Java学习路径(一)工具篇
- JAVA与模式 学习笔记(一) 统一的建模语言UML介绍(2)
- Java学习经典方式