接着之前的知识,今天主要回顾一下命名的一些规则和关于运算方面的基础知识吧。……

 

  接着之前的知识,今天主要回顾一下命名的一些规则和关于运算方面的基础知识吧。

  

  1. 驼峰命名法

类名/接口名:如果由多个单词组成,那么每一个单词的首字母大写。(比如说,HelloWorkd)

变量名/方法名:如果由多个单词组成,那么第一个单词的首字母小写,其余单词的首字母大写 playGame main

包名:如果由多个单词组成,那么每一个单词之间用 . 隔开,所有的字母都是小写 cn.tedu.de

常量名:如果由多个单词组成,那么每一个单词之间用 _ 隔开,所有字母都是大写 PLAY_GAME

 

  2. 注释

(用于解释说明的文字)

// 注释文字  单行注释

/* 注释文字*/  多行注释

/** 注释文字/  文档注释 --- 里面的注释内容可以利用 javadoc 命令提取出来形成文档(就是对程序的说明书)*会生成错误是因为配置环境变量时加入了 CLASSPATH,因为版本是 1.8 以上的了,所以可以删掉。

 

Java 基础 | 命名和运算_Java           Java 基础 | 命名和运算_Java_02

 

  3. 字面量

(在计算机中不可改变的量)

整数常量:所有的整数(比如说 7、15、186、42)

小数常量:所有的小数(比如说 3.12、8.005、6.0)

字符常量:将一个字母、数字或者是符号用 ‘ ’标识起来(比如说 ‘a’、‘+’、 ‘5’、‘小’、‘ ’)

字符串常量:将一个或者多个字符用 " " 标识起来(比如说 "abc"、"+")

布尔常量:true/false --- 用于表示逻辑值

空常量:null

 


 

(计算机通过有电、没电这样的小开关来存放数据,只有0和1两种状态,是二进制存放)

 Java 基础 | 命名和运算_Java_03          Java 基础 | 命名和运算_Java_04

  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、…… 次,最后求和。

Java 基础 | 命名和运算_Java_05

 十进制和其他进制之间的转换

十进制转化为其他进制:十进制数字向哪个进制转化那么就除以对应的进制,然后取余数,将余数倒排。

其他进制转化为十进制:从这个进制的数字的最低位次,然后按位次乘以当前的进制的位次次幂,最后求和  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)



 

Java 基础 | 命名和运算_Java_06

 

   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. 数据类型

 

Java 基础 | 命名和运算_Java_07

  

  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;

Java 基础 | 命名和运算_Java_08

 

  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;

规律三:

 

Java 基础 | 命名和运算_Java_09

  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

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 - 非数字

 

% - 取模运算 - 取余运算

9 % 4 = 1 、3 % 8 = 3

-9 % 4 = -1 、 9 % -4 = 1 、 -9 % -4 = -1

% 的结果的正负看的是 % 左边数据的正负 -> 如果左边的数字是一个正数,那么结果就是正数;反之,那么结果就是负数

5%1.4=0.8 、 6.3 % 1.7  = 1.2

 

++/-- 自增/自减运算

++/--  如果在变量之前,那么先自增/自减,然后参与后续运算

++/-- 如果在变量之后,那么先参与运算,然后再自增/自减

int i= 6;  
int j=i++ + ++i; //输出结果 i = 8 ,j = 14

 

byte/short/char  都可以参与自增运算

char c = 'b'

int c = c + 2; ->100

'a' ~'z' -> 97~122      'A'~'Z' -> 65~90      '0' ~'9'-> 48~57

 

  8.2赋值运算符

  8.3关系运算符

  8.4逻辑运算符

  8.5位运算符

  8.6三元运算符

 

关于 >> 和 >>> 的区别:

https://blog.csdn.net/blog_szhao/article/details/23997881