接着之前的知识,今天主要回顾一下命名的一些规则和关于运算方面的基础知识吧。
1. 驼峰命名法
类名/接口名:如果由多个单词组成,那么每一个单词的首字母大写。(比如说,HelloWorkd)
变量名/方法名:如果由多个单词组成,那么第一个单词的首字母小写,其余单词的首字母大写 playGame main
包名:如果由多个单词组成,那么每一个单词之间用 . 隔开,所有的字母都是小写 cn.tedu.de
常量名:如果由多个单词组成,那么每一个单词之间用 _ 隔开,所有字母都是大写 PLAY_GAME
2. 注释
(用于解释说明的文字)
// 注释文字 单行注释
/* 注释文字*/ 多行注释
/** 注释文字/ 文档注释 --- 里面的注释内容可以利用 javadoc 命令提取出来形成文档(就是对程序的说明书)*会生成错误是因为配置环境变量时加入了 CLASSPATH,因为版本是 1.8 以上的了,所以可以删掉。
3. 字面量
(在计算机中不可改变的量)
整数常量:所有的整数(比如说 7、15、186、42)
小数常量:所有的小数(比如说 3.12、8.005、6.0)
字符常量:将一个字母、数字或者是符号用 ‘ ’标识起来(比如说 ‘a’、‘+’、 ‘5’、‘小’、‘ ’)
字符串常量:将一个或者多个字符用 " " 标识起来(比如说 "abc"、"+")
布尔常量:true/false --- 用于表示逻辑值
空常量:null
(计算机通过有电、没电这样的小开关来存放数据,只有0和1两种状态,是二进制存放)
4. 进制
(是一种计数方式(分和秒是 60 进制,天是 24 进制,周是 7 进制,但是常用的是 10 进制,计算机是二进制))
二进制:0-1,满 2 进 1 1+1=10 11+1=100 111+1=1000。在程序中以 0b/0B 开头标记一个二进制数字(从 JDK1.7 开始) 0b1001 0b00101
八进制:0-7,满 8 进 1 7+1=10 27+1=30 77+1=100 要求以 0 开头标记一个八进制数字
十进制:0-9,满 10 进 1 Java 中数字默认就是十进制
十六进制:0-9,A-F(不区分大小写),满 16 进 1 9+1=a a+1=b f+1=10 39+1=3a 3f+1=40 99+1=9a 9f+1=a0 af+1=b0 af+1=b0 ff+1=100,要求以 0x/0X 作为开头标记
4.1进制的转换
十进制和二进制之间的转换
十进制转换为二进制:将这个十进制数字除以 2 ,从下依次向上倒取余数。
二进制转换为十进制:从这个二进制数字的最低位次开始,依次乘以 2 的0、1、2、…… 次,最后求和。
十进制和其他进制之间的转换
十进制转化为其他进制:十进制数字向哪个进制转化那么就除以对应的进制,然后取余数,将余数倒排。
其他进制转化为十进制:从这个进制的数字的最低位次,然后按位次乘以当前的进制的位次次幂,最后求和 0274=4*8^0+7*8^2=4+56+128=188
(一个面试题:16 * 5 = 150 (6 + n) * 5 = 5n + n^2,先设的是 n 进制,个位数是 6 ,那么进制肯定会大于或等于 6,于是前面可以表示为进制数相乘,后面可以用 10 进制转换为 n 进制)
八进制和二进制之间的转换
二进制转八进制:八进制数字排列 --- 三变一(就是从后往前数,三个三个一组,不足位数就在前面添 0)(比如说 001 101 010 = 0152 001 010 111 011=01273
八进制转化为二进制:05473 = 101100111011 03517 = 11101100001111
十六进制和二进制之间的转化:101100111011 = 0xb3b 011101001111 = 0x74f
0xd2c=110100101100 (0到15的二进制数字背住)
扩展:十进制小数转换为二进制
5.24 = 101.001111
0.24 * 2=0.48*2=0.96*2=1.92->0.92*2=1.84->0.84*2=1.68->0.68*2=1.36 0.72 1.44 0.88 0.76
绝大部分的小数转化为二进制都是无限的 --- 所以计算机小数的时候会产生舍入误差(存小数的时候会出现问题,比如 0.13=0.12999999999)
5.变量
(在程序中用于存储数据的容器,)
定义格式:数据类型 变量名 = 数据;int i = 5;
变量不能重名
变量必须先定义后使用
变量必须先给值后使用
变量必须在哪儿定义就在哪儿使用
扩展:计算机存储单位
每一个二进制数字称之为 1 位 --- bit -b
字节 - Byte - B 1B = 8b
千字节 - kilobyte - KB 1KB = 2^10B = 1024B
兆字节 - MB -> GB-> TB ->PB(帕比特)……
8Mb = 1MB
100Mb = 12.5MB(MB 是你的网速,这就是为什么你的网速一直达不到 100MB 的原因)
3GB = 3000MB --- 在通信领域是按照千进制计算
6. 数据类型
6.1基本数据类型
6.11数值型
整数型
byte -字节型 - 1个字节 - -27~27 -> -128~127
byte b=25; byte b2=127; byte b3 = -128;
short - 短整型 - 2个字节 - -215~215-1 ->-32768~32767
short s = 800; short s2 = 1500;
int - 整型 - 4 个字节 - -231~231-1 -> -2.1*109~2.1*109 - Java 中,整数默认为 int 类型
int i = 6; int k=5_482_637(当表示一个比较大的整数的时候,可以使用 _ 进行分类,这种写法是从 JDK1.7 出现的)
5 482 637
long - 长整型 - 8个字节 - 263~263-1 -> -1018~1018,需要以 L/l 作为结尾标记
long l=54L;
浮点型
float - 单精度 - 4 个字节 -> -1038~1038 --- 需要以 f/F 作为结尾
float f=5.87f; float f=3.87F;
double - 双精度 - 8 个字节 ->-10308~10308 Java 中小数默认为 double 类型 - 小数结尾可以添加 D/d 作为标记。
double d = 4.5; double d2=2.58; double d3=9.54D;
char - 字符型 - 2 个字节 -> 0~65535,使用的是utf-16
char c = 'a'; char c2 = '\ua4f3'(表示用 uft-16 的编码形式来定义的) char c3 ='中';
7. 转义字符
\t-制表符 table \r-回车 return \n-换行 next (打字机上回车把针头挪回开始位置,换行才是挪回到下一行)
\\-反斜杠 \ \'-单引号 ' \"-双引号;
扩展:将字符转换为数字的过程称之为编码 --- 编码表
ISO - 8859 -1 - 西欧码表 - 1个字节表示 1 个字符 a
(美 回 区)
gb2312 - 国标码 - gbk - 2 个字节表示 1 个字符 - 收录了常见的简体汉字以及一部分常见的繁体汉字
Unicode 编码体系 - 收录了世界上常见语言的基本字符(像西夏文、原始部落的语言就不用收录了,) --- 规定了一系列的编码规则 - utf-8 -> 3个字节表示一个字符 utf-16 ->2个字节表示一个字符(java 用的)
注意:规定无论哪张码表兼容西欧码表
k 1 1 1 1 1 (英文不区分码表)
区 X 2 3 2(汉字要区分码表)
boolean - 布尔型 -true/false,用于表示逻辑值(内存随着操作系统、JDK 版本在变化,)
boolean b = true; boolean b2 = false;
6.2 引用数据类型 --- 数组 [] 类 class
7.数据类型的转换
7.1自动类型转换/隐式转换
byte b = 125;
int i = b;
规律一:小的类型自动转化为大的类型
short s=7;
long l=s;
long l=500; //500是一个整数,整数默认为 int,int 的范围比 long 小,所以可以自动转换
float f = 56.71F;
double d = f;
int i=300;
double d=i;
规律二:整数类型可以自动转化为浮点类型,可能会产生一个舍入误差(1.23456794E9 xey 表示 x*10^y,而 ox3e5 才表示一个 16 进制)
int i = 500;
float f=i; // i 是 int 类型,int 的取值范围比 float 小,所以 int 可以自动转化为 float
long l=259L;
float f=l;
float f=-25;// -25 是整数,
char c='a';
int i=c;
规律三:
7.2强制类型转换/显示转换
int i=135;
byte b=(byte)i;
规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一个意想不到的结果
double d = 6.4;
int i = (int)d;
规律二:小数在转化为整数时要舍弃小数位。
扩展:数据的原反补三码
数据类型的最高位是符号位 --- 如果最高位是 0,则表示一个正数,如果最高位是1,则表示一个负数。
计算机中存储的是数据的补码
直接计算出来的二进制数字是数据的原码
int i=7;
00000000 00000000 00000000 00000111 原码
00000000 00000000 00000000 00000111 反码
00000000 00000000 00000000 00000111 补码
如果是负数,那么反码是在原码的基础上,最高位不变,其余位 0<->1; 补码是在反码的基础上 +1
int j=-9;
10000000 00000000 00000000 00001001 原码
11111111 11111111 11111111 11110110 反码
11111111 11111111 11111111 11110111 补码
byte b = -18;
原码:10010010
反码:11101101
补码:11101110(计算机中存放的就是这个,补码)
int i = 135;
byte b = (byte)i;
00000000 00000000 00000000 10000111
10000111 补码(计算机中存放的是这个,补码)
10000110 反码
11111001 原码(1+8+16+32+64=121 -> -121,显示出来的是这个)
注意:规定用 -0 表示当前类型的最小值 1000 0000 --- -128(原反补都是相同的)0000 0000 --- 0
byte b = 126;
+1 = 127 + 1 = -128
8. 运算符
8.1算数运算符
(+ - * / % ++ --)
注意:
1.byte/short/char 在运算时自动提升为 byte b1 = 5; byte b2 = 7; byte b = b1+b2;(是会报错,因为后面是 int 型的,)
2.整型在运算的时候保持类型不变(比如说一个整型除以一个整型还是整型)
3.小类型和大类型运算,结果一定是大类型(比如说一个 int 型除以一个 double 型就是一个 double 型的)
4.任意整数/0 - ArithmeticException - 算术异常
任意整数/0.0 任意非零小数/0 - Infinity - 无穷大
0/0.0 0.0/0.0 0.0/0 NaN - Not a Number - 非数字
8.2赋值运算符
8.3关系运算符
8.4逻辑运算符
8.5位运算符
8.6三元运算符
关于 >> 和 >>> 的区别:
https://blog.csdn.net/blog_szhao/article/details/23997881
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有