首页 > 编程语言 >Java学习笔记——第二天

Java学习笔记——第二天

时间:2024-03-01 21:11:27浏览次数:22  
标签:十六进制 Java 变量 二进制 笔记 第二天 false 八进制 true

进制知识

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

  • 二进制:只有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中判断是否相等一定是“== ” ,千万不要把 “== ”误写成 “=”。

逻辑运算符

  • 把多个条件放在一起运算,最终返回布尔类型的值: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;(IDEA会自动导入需要的包)
  2. 得到扫描器对象: Scanner sc = new Scanner(System.in)
  3. 等待接收用户输入的数据:
    • int age = sc.nextInt();
    • String name = sc.next();

标签:十六进制,Java,变量,二进制,笔记,第二天,false,八进制,true
From: https://www.cnblogs.com/zgg1h/p/18047945

相关文章

  • 前端 xlsx js javascript 处理excel 数据展示 日期格式处理
     1、参考https://blog.csdn.net/Seven71111/article/details/107375712https://blog.csdn.net/weixin_44987713/article/details/130129282 https://blog.csdn.net/qq_57952018/article/details/134812452 2、存在的问题a、千年虫b、定义一个转换日期格式的方法(转成......
  • 网络流笔记
    资料用最通俗的语言让你学会网络流$\begin{array}{c}\left|f+f'\right|=\left|f\right|+\left|f'\right|\end{array}$所以,当可行流的残余网络有可行流,原网络的可行流一定不是最大流对于任何一个可行解,都对应一个可行流并且对于任何一个可行流,都对应一个......
  • 10199元起 LG gram Pro 2024款笔记本上架:酷睿Ultra 7+120Hz OLED屏
    LGgramPro2024款笔记本目前已经上架,首发10199元起。设计上,新款笔记本的重量只有1199克,厚度仅为12.4毫米,轻薄机身可以轻松放入日常背包。据悉,新款笔记本提供了16英寸(16Z90SP)和17英寸(17Z90SP)版本,采用2.8KOLED屏幕,支持120Hz超高刷新率。性能上,新款笔记本可选英特尔酷睿Ultra......
  • Java 韩顺平老师的课,记的(前6章)笔记
    https://www.bilibili.com/video/BV1fh411y7R8/?p=110&spm_id_from=333.880.my_history.page.click&vd_source=92305fa48ea41cb7bedb3ab5e056d42d韩顺平老师在b站课的链接。 010,JDK的介绍 018,Java开发细节 6,一个源文件中最多只能有一个public类。其他类的个数不限。......
  • java调用接口
    longdateStr=System.currentTimeMillis()/1000;Stringurl="";//创建参数JSONObjectjsonObject=newJSONObject();jsonObject.put("Action","1111");jsonObject.put("DeviceType","2222&quo......
  • Java特性和优势
    Java特性和优势简单性面向对象可移植性高性能分布式动态性(反射)多线程安全性健壮性Java三大版本JavaSE:标准版(桌面程序,控制台开发)JavaME:嵌入式开发(手机,小家电)JavaEE:E企业级开发(Web端,服务器开发)JDK、JRE、JVMJDK:JavaDevelopmen......
  • div3笔记
     Problem-E-Codeforces这道题用了记录一个数末尾零的板子(敲重点)!!!再说一遍,简单博弈论就是贪心!1voidsolve(){2cin>>n>>m;3vector<int>a(n),b(n);4for(inti=0;i<n;i++)cin>>a[i];5intlen=0;//这组数字总共有几位,总长度6......
  • Top 500 配置笔记
    因为某种原因需要在服务器上测试Top500。top500官网Top500是一个对计算机性能进行排榜的榜单,而Green500则是一个对计算机能耗进行排榜的榜单,能耗=性能/功耗,Green500可以说是Top500的一个Top500使用Linpack基准测试来测试服务器性能。Linpack的C语言实现HPL-用于分布式内存计......
  • (笔记)Linux下glog日志库的详细使用方法
     Glog是一个开源的C++日志库,它提供了非常方便的日志记录功能。下面是使用Glog的详细步骤: 一、安装Glog库您可以从Glog的官方网站(https://github.com/google/glog)下载Glog的源代码,然后进行编译和安装。在Linux系统下,您可以使用以下命令安装Glog库:sudoapt-getinstalllibg......
  • Lua学习笔记3
    Lua学习笔记3IO读写Lua中读写使用自带的I/O库处理文件。分为简单模式和完全模式。简单模式(simplemodel)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(completemodel)使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件......