程序最核心的目的就是为了操作数据,但是数据都在内存中,也就是我们的JVM,而且这个内存区域是 循环使用的。 程序中一般使用变量来操纵存储空间中的数据! Java是一种强类型语言,每个变量使用前必须提前声明,可以合理更加合理的利用空间。 Java变量要素包括变量名,变量类型和作用域。
modifier type identifier [ = value][, identifier [= value] …] ;
identifier :定义一个变量的名字
type :用来确定占用空间的大小
简单来说: 变量=数据类型+标识符
给类,接口,方法,变量等起名字的字符序列。用来查找、定位、标明、唯一确认内容。 Java 标识符有如下命名规则:
标识符必须以字母、下划线_ 、美元符$开头。 标识符其它部分可以是字母、下划线“_”、美元符“ ”和数字的任意组合。
Java 标识符大小写敏感,且长度无限制。
不可以是Java的关键字
JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里 的字母的含义:英文、汉字等等。
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55;
不合法的标识符
int 1a = 3; //不能用数字开头
int a# = 3; //不能包含#这样的特殊字符
int int = 3; //不能使用关键字
关键字也可以称为保留字,它们的意思是一样的。是被系统征用的特殊单词(标识符),而且是被广大程序 员所认知的
goto和const作为保留字存在。
不能使用关键字作为变量名或方法
进制就是进位制,是人们规定的一种进位方法。
对于任何一种进制—X进制,就表示某一位置上的数运算时是逢X进一位
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。 生活中其实有很多进制:10进制 星期 小时 分钟 秒钟 年 月
Java进制分为二进制,八进制,十进制,十六进制, 但是计算机只能处理2进制的数据和指令。
十进制: 都是以0-9这九个数字组成,不能以0开头。
二进制: 由0和1两个数字组成。
八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以ox开始
进制的转换
二进制 --> 十进制
123 = 1 * 100+2 * 10+3 * 1 = 1 * 10^2 + 2 * 10^1 +3 * 10^0 = 123 110 = 1 * 2^2 + 1 * 2^1 + 0 * 2^0 = 6
十进制 --> 二进制
对十进制数字取余 然后将余数逆序拼接到一起
二进制的符号位
一般情况下,我们把二进制的左数第一位作为符号位,8个数字为一组
0 正数 1 负数
6 --》0000 0110
-6–》1000 0110
进制的转换
二进制 --> 十进制
123 = 1 * 100+2 * 10+3 * 1 = 1 * 10^2 + 2 * 10^1 +3 * 10^0 = 123
110 = 1 * 2^2 + 1 * 2^1 + 0 * 2^0 = 6
十进制 --> 二进制
对十进制数字取余 然后将余数逆序拼接到一起
二进制的符号位
一般情况下,我们把二进制的左数第一位作为符号位,8个数字为一组
0 正数 1 负数
6 --》0000 0110
-6–》1000 0110
原因:
因为在使用原码,反码在计算时不准确,使用补码计算时才准确。
而且计算机没有减法,只有加法
计算机的容量
电脑的容量单位最小的是Bit,也就是位。
而8位为一个字节,也就是Byte
Kilobyte〈KB〉=1024bytes相当於一则短篇故事的文字内容;
Megabyte〈MB〉=1024 Kilobytes相当於阅读一则短篇小说的文字内容;
Gigabyte〈GB〉=1024 Megabytes相当於贝多芬第五章交响曲的乐谱内容;
Terabyte〈TB〉=1024 Gigabytes相当於一家大型医院中所有X光图片资讯量;
Petabyte〈PB〉=1024 terabytes相当於50%的全美学术研究图书馆藏书资讯内容;
Exabyte〈EB〉=1024 petabyte,相当於至今全世界人类所讲过的话语;
Zettabyte〈ZB〉=1024 exabyte如同全世界海滩的沙子总和;
Yottabyte〈YB〉=1024 zettabyte相当於7000位人类体内的微细胞总和
平常我们买的硬盘大小会有一定的损失
工业标准是按照1000进行计算
科学标准是按照1024进行计算
java定义数据类型比较主要的一个操作是为了分配不同内存空间
对内存占用分类
基本数据类型(primitive type)
基本数据类型占用内存大小是固定的
①整数类型: long、int、short、byte
②浮点类型: float、double
③字符类型: char
④布尔类型: boolean
引用数据类型(reference type)
引用数据类型占用的内存大小是未知的
类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
除了基本数据类型,就是引用数据类型
但是引用数据类型都是由基本数据类型构成的
Java中定义了3类8种基本数据类型
逻辑型-boolean
文本型- char
数值型- byte, short, int, long, float, double
数值类型-整型
数值类型-浮点型
布尔类型
boolean类型有两个值,true和false boolean
类型用来判断逻辑条件,一般用于程序流程控制 。
单引号用来表示字符常量。例如 ‘A’ 是一个字符,它与 “A” 是不同的, “A” 表示含有一个字
符的字符串。
char 类型用来表示在 Unicode 编码表中的字符。
Unicode 编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536 个字符。
Unicode具有从0到65535之间的编码,通常用从 ’\u0000’ 到 ’\uFFFF’ 之间的十六进制值来表
示(前缀为u表示Unicode)
char char1 = 'a';
char char2 ='中';
char c = '\u0061';
char c2 = '\n'; //代表换行符
声明之前我们不知道真实对象所占用内存大小的多少
注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!
局部变量(lacal variable) :
方法或语句块内部定义的变量。生命周期是从声明位置开始到下一个}为止(Java支持块级作用
域)。
在使用前必须先声明和初始化(赋初值)
public void incorrectLocalV() {
int i;
i=10;
int j = i+5 ; // 编译出错,变量i还未被初始化
}
实例变量(成员变量 member variable):
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终
如果不自行初始化,他会自动初始化成该类型的默认初始值
数值型变量初始化成0或0.0
字符型变量的初始化值是16位的 ‘\u0000’
布尔型默认是false