基本数据与计算
1. 关键字
关键字是Java中自带的类名、方法名等,是有特殊规则的。
首字母大写的是自带的类名如String、System等。
全小写的如public、static、void、main等。
2. 标识符
包含关键字,除了关键字还可以是程序员自定义的类名、方法名、变量名。
组成规则:
由字母、数字、下划线、美元符$组成。数字不能开头
组成规范:
小驼峰式命名法:如myName、number,主要运用在函数名、变量名
大驼峰式命名法:如MyName、Number,主要运用在类名
全大写命名法:如PI、NUM,主要运用在常量
3. 注释
不属于代码范畴,不会进入字节码文件
为什么要有注释:代码过多的情况下,程序员容易忘记,为了提示程序员
分类:
单行注释:// 注释内容
多行注释:/* 注释内容 */
文档注释:/ * * 注释内容 * */
其中文档注释可以通过javadoc.exe工具生成说明书.html格式
4. 常量与进制
常量有整数、浮点数、字符、字符串、布尔、空。
整数
二进制0b开头
八进制0开头
十进制
十六进制0x开头
***下图是这些进制转换的一些简单例子:***
浮点数
浮点数有两种表示方式:1、直接表示如:3.14 2、科学计数法表示如55.2e3(55.2乘10的3次方)
字符与字符串
字符是单个字母、数字、汉字、符号被单引号包含的数据
字符串是单个或多个字母、数字、汉字、符号被双引号包含的数据,
" "双引号内无内容表示空串
布尔(关键字)
表示真和假两个概念:
true/false
空(关键字)
用null表示
5. 变量
变量:本身可以改变的数据
变量的本质:内存当中某个进程的数据临时存储区域
为什么要有变量:1.解决重复性数据更迭的问题、2.在计算机计算的过程
中,会产生数据,变量将这些数据存储起来 变量创建时都会随机分配地址(物理地址) 变量中存的不是数据本身,而是数据在数据池中的地址
由于变量的地址是随机创建的,当进程重启时地址也是随机的,为了避免地址的不确定性,引入了变量名这个概念 由变量名-地址表
来保证变量名和变量之间的关系(底层实现)
6. 基本数据类型
为什么要有数据类型呢?
目的一:限制当前变量当中所存储的数据(变量当中的数据必须是可兼容的)
目的二:减少空间的使用
有哪些数据类型(数据类型的分类):
整型
- byte(1字节 8bit):28=256,可存储的数字区间-128~127,开头一位是符号位
- short(2字节 16bit):216=65536,可存储的数字区间-32768~32767
- int(4字节 32bit):232 ,-231~ 231-1,Java默认的整型数据存储大小,2的31次方=2147483648
- long(8字节 64bit):264,-263~ 263-1,是天文数字一般用不上,2的63次方=9223372036854775808
浮点型
- float(4字节)
- double(8字节):Java默认的浮点型数据存储大小
注意:
当精度较小的数据与精度较大的数据进行运算时,精度较小的会往精度较大的转换(强制类型转换)
大转小会有精度差
整型与浮点型的数据运算时整型均转为double型
字符型
- char (2字节):0~65535,指的就是字符的编号
大多数计算机采用ASCII 码(美国标准信息交换码),它是表示所有大小写字母、数字、 标点符号和控制字符的8位编码表。Unicode 码包括ASUII 码, 从 \U0000 到 \U007F 对应 128 个 ASCII 字符。
Java 支持 Unicode 码,Unicode 码是由 Unicode 协会建立的一种编码方案,它支持使用 世界各种语言所书写的文本的交换、处理和显示。Unicode 码一开始被设计为 16位的字符编码。基本数据类型 char 试图通过提供一种能够存放任意字符的简单数据类型来利用这个设计。
- 要将一个浮点值转换成 char 型时,首先将浮点值转换成int 型,然后将这个整型值转换为 char 型。
- char 型数据可以转换成任意一种数值类型,当一个 char 型数据转换成数值型时,这个字符的Unicode码就被转换成某个特定的数值类型。
布尔boolean
- 只有两个值true/false用来表示 真/假 条件表达式的返回类型就是布尔类型
- 在Java当中并没有给boolean一个明确的大小,主要和底层虚拟机相关
如果boolean是一个变量的话 1字节
如果boolean是一个数组的话 每个空间是4个字节
7.引用数据类型
字符串
- String也不存在具体的大小,它的大小是根据字符串的内容而决定的
如何定义变量
在Java中有以下两种定义格式
数据类型 变量名=常量;//第一种
数据类型 变量;//第二种
变量=常量
int a = 0;// = 后面也可以是有返回值的表达式
int b;
b = 0;
8.运算符
算数运算符
-
+ 加法运算符
如果+号的两边都是数字的话,那么这个+表示的数学上的加法
如果+号的两边,只有有一个字符串,那么这个+表示的是字符串连接符 -
- 减法运算符
-
*乘法运算符
-
/ 除法运算符
如果两边都是整数 结果就是整数(整除)
如果两边至少存在一个小数,结果就是小数 -
% 取余运算
相当于是整除运算,但是得到的结果是余数 -
自增自减运算符
++/- -运算符有前置与后置之分 详细->自增自减运算符细绍
赋值运算符
- +=、-=、*=、/=、%=、=
i+=1;等效于i=i+1;
比较运算符
- <、>、<=、>=、==、!=,它们的运算结果都是boolean类型
- 不管是在基本数据类型还是在后期面向对象 ==永远比的是两个变量(常量)当中所存储的那个数据的地址!
常量在常量池中的地址;对象在堆内存中的地址
逻辑运算符
- 与(同真则真,遇假则假)有单与 &双与 &&
&&的话,左边一旦为假,右边无论真假,结果都是假,所以右边可以不运行 - 或(有真则真,同假则假)有单或 |和双或 ||
||的话,左边一旦为真,右边无论真假,结果都是真,所以右边可以不运行 - 非(非真就是假,非假就是真)!
- 异或(相同为假,不同为真)^
逻辑运算符的运算结果肯定是一个boolean类型
位运算符
- 指的就是二进制之间的运算
~(按位取反)
0变1,1变0
&与
0100 1011
0011 1101一位一位比较有0则0
0000 1001(结果)
|或
0100 1011
0011 1101一位一位比较有1则1
0111 1111(结果)
^异或
0100 1011
0011 1101一位一位比较相同为0,不同为1
0111 0110(结果)
<<、>>,左移和右移
0100 1011
左移<<3得到结果为010 0101 1000
右移>>3得到结果为0 1001
三目运算符
变量=布尔表达式 ? 值1 : 值2;
- 如果布尔表达式的结果是true,则将值1赋予变量
如果布尔表达式的结果是false,则将值2赋予变量
它在一定程度上简化了if语句的功能