Java学习笔记——第二天

进制知识

二进制、八进制和十六进制

  • 二进制:只有0和1两个数字,按照逢2进1的方式表示数据。
  • 八进制:只有0~7八个数字,按照逢8进1的方式表示数据。
  • 十六进制:由0~9以及A,B,C,D,E,F,共十六个数字,按照逢16进1的方式表示数据,其中A,B,C,D,E,F分别代表十进制的10,11,12,13,14,15。
  • Java程序中支持书写二进制、八进制、十六进制的数据,分别需要以0B或者0b、0、0X或者0x开头。
0b11011001 //二进制
0B11011001 //二进制
04647      //八进制
0X156A5B   //十六进制
0x156A5B   //十六进制

十进制转换为二进制

除二取余法

除二取余法

13的二进制是1101

二进制、八进制和十六进制转换为十进制

十进制的转换方式为

10^3   10^2  10^1 10^0
1000   100   10   1
x      x     x    x
1      9     9    8
--------------------------
1000 + 900 + 90 + 8 = 1998

同理,二进制的转换方式为

2^3   2^2   2^1   2^0
8     4     2     1
x     x     x     x
1     0     1     1
--------------------------
8  +  0  +  2  +  1 = 11

八进制的转换方式为

8^3    8^2   8^1   8^0
512    64    8     1
x      x     x     x
2      4     7     0
--------------------------
1024 + 256 + 56 + 0 = 1336

十六进制的转换方式为

16^3   16^2  16^1  16^0
4096   256   16    1
x      x     x     x
1      3     A     2
--------------------------
4096 + 768 + 160 + 2 = 5026

二进制转换为八进制、十六进制

二进制转换为八进制

将二进制数字从右边开始按三位一组分开作为一个单元,再把每一个单元转换成对应的十进制数即可。

11001001→11 001 001→211(八进制)

二进制转换为十六进制

将二进制数字从右边开始按四位一组分开作为一个单元,再把每一个单元转换成对应的十六进制数即可。

111011001→1 1101 1001→1D9(十六进制)

八进制、十六进制转换为二进制

八进制转换为二进制

将八进制数字的每一位转换成对应的二进制数,再按顺序将所有二进制数连接起来,最后去掉左边多余的0即可。

211(八进制)→011 001 001→11001001

十六进制转换为二进制

将八进制数字的每一位转换成对应的二进制数,再按顺序将所有二进制数连接起来,最后去掉左边多余的0即可。

1D9(八进制)→1 1101 1001→111011001

计算机中数据的存储方式

将数据编码为二进制后进行存储。

计算机中数据的最小单位

计算机中数据最小的组成单元是字节(byte,简称B),一个字节是由八个二进制位组成的。同时每个二进制位就称为位(bit,简称b), 1B = 8b。

其他数据单位

KB,MB,GB,TB,PB...

1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
...

数值的存储

将数值直接转换为二进制后进行存储。

文本的存储

将文本字符编码为二进制后进行存储。

ASCII码

ASCII码

  • 字符'A'对应的十进制ASCII码是65
  • 字符'a'对应的十进制ASCII码是97
  • 字符'0'对应的十进制ASCII码是48

图片的存储

将图片每一个像素进行三通道编码,即红、绿、蓝通道,每个通道都使用一字节,范围为0~255,然后将编码后的二进制数据进行存储。

声音的存储

将声音进行采样、量化和编码成二进制数据后进行存储。

视频的存储

即同时存储图片和声音数据,依然是存储二进制数据。

数据类型

有哪些数据类型

基本数据类型

基本数据类型分为四大类8种,如下表所示。

基本数据类型

  • Java默认整型变量为int类型,若想使用long类型的字面量则需要在最后加上L或l,如:16548951561655L/l。
  • Java默认浮点型变量为double类型,若想使用float类型的字面量则需要在最后加上L或l,如:3.14F/f。

引用数据类型

包括类、接口类型、数组类型、枚举类型和字符串型等。

类型转换

为什么要进行类型转换

存在不同类型的变量赋值给其他类型的变量的情况。

自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量,这就是自动类型转换。

自动类型转换的顺序:

自动类型转换

表达式的自动类型转换

  • 在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算。
  • 表达式的最终结果类型由表达式中的最高类型决定。
  • 在表达式中,byte、short、char类型是直接转换成int类型参与运算的,且只要参与运算,这些类型的值就会转换成int类型。

表达式的自动类型转换

强制类型转换

强行将类型范围大的变量、数据赋值给类型范围小的变量,此时程序的正确性由开发者负责。

用法:

数据类型 变量1 = (数据类型) 变量2或数值;
  • 强制类型转换可能造成数据溢出(丢失)。
  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。

运算符

算术运算符

符号 作用 说明
+ 加法
- 减法
* 乘法
/ 除法,在Java中两个整数相除结果还是整数。
% 取余 获取的是两个数据做除法的余数
  • “+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。

自增自减运算符

符号 作用
自增:++ 放在某个变量前面或者后面,对变量自身的值加1
自减:-- 放在某个变量前面或者后面,对变量自身的值减1
  • ++ 、-- 只能操作变量,不能操作字面量的。
  • ++、--放在变量的前面时,先对变量进行+1、-1,再拿变量的值进行运算。
  • ++、--放在变量的后面时,先拿变量的值进行运算,再对变量的值进行+1、-1。

赋值运算符

符号 用法 作用 底层代码形式
= a = b 将右边的值赋给左边
+= a += b 加后赋值 a = (a的类型)(a + b);
-= a -= b 减后赋值 a = (a的类型)(a - b);
*= a *= b 乘后赋值 a = (a的类型)(a * b);
/= a /= b 除后赋值 a = (a的类型)(a / b);
%= a %= b 取余后赋值 a = (a的类型)(a % b);
  • =为基本的赋值运算符。
  • +=、-=、*=、/=和%=为扩展的赋值运算符。
  • 扩展的赋值运算符隐含了强制类型转换。

关系运算符

符号 例子 作用 结果
> a > b 判断a是否大于b 成立返回true、不成立返回false
>= a >= b 判断a是否大于或等于b 成立返回true、不成立返回false
< a < b 判断a是否小于b 成立返回true、不成立返回false
<= a <= b 判断a是否小于或等于b 成立返回true、不成立返回false
== a == b 判断a是否等于b 成立返回true、不成立返回false
!= a != b 判断a是否不等于b 成立返回true、不成立返回false
  • 判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false。
  • 在java中判断是否相等一定是“== ” ,千万不要把 “== ”误写成 “=”。
  • ==在8种基本数据类型的比较中的作用是比较对应变量的数值是否相等
  • ==在对象类型的比较中的作用是比较对应对象在堆内存中的地址是否相等

逻辑运算符

  • 把多个条件放在一起运算,最终返回布尔类型的值:true、false。
符号 名称 作用 运算逻辑
& 逻辑与 2 > 1 & 3 > 2 多个条件必须都是true, 结果才是true; 有一个是false,结果就是false
| 逻辑或 2 > 1 | 3 < 5 多个条件中只要有一个是true, 结果就是true
! 逻辑非 !(2 > 1) 就是取反:你真我假,你假我真。!true == false,!false == true
^ 逻辑异或 2 > 1 ^ 3 > 1 前后条件的结果相同,就直接返回false,前后条件的结果不同,才返回true
符号 名称 作用 运算逻辑
&& 短路与 2 > 10 && 3 > 2 判断结果与“&”一样,过程不同:若左边表达式的结果为false,则不执行右边表达式
|| 短路或 2 > 1 | | 3 < 5 判断结果与“|”一样,过程不同:若左边表达式的结果为true, 则不执行右边表达式。
  • 在& 和|中,无论左边是 false还是 true,右边都要执行。

  • 由于&&和||的运算效率更高,故其在开发中用得更多。

三元运算符

条件表达式 ? 值1 : 值2;
  • 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。

运算符的优先级

优先级 运算符
1 ()
2 !、~、++、--
3 *、/、%
4 +、-
5 <<、>>、>>>
6 <、<=、>、>=、instanceof
7 ==、!=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 =、+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=、|=
  • 表格中,越往上的越优先,优先级相同的符号按表达式内从左到右的顺序运算。
  • &的优先级高于|。

API

API是什么

API,即Application Programming Interface,应用程序编程接口,是Java写好的程序,咱们可以直接调用。

API文档是什么

Java提供的API使用说明书。

Java程序中实现接收用户键盘输入的数据

使用Java提供的Scanner类来完成,步骤如下:

  1. 导包:import java.util.Scanner;
  2. 得到扫描器对象: Scanner sc = new Scanner(System.in)
  3. 等待接收用户输入的数据:
    • int age = sc.nextInt();
    • String name = sc.next();
posted @ 2024-03-01 21:07  zgg1h  阅读(100)  评论(0)    收藏  举报