二进制
原理
通过Java,c,python等高级语言编写的10进制程序,经过JDK编译后形成16进制的class文件,然后通过虚拟机转换并运行计算机硬件能识别的二进制信息,计算机的硬件层面通过高低电平来模拟0和1。(个人理解)
应用
Text格式,通过ASCII码表将十进制的内容一一对应的方式转换成二进制格式存储或运行。
Image文件,通过RGB原色表来表示每个每个像素点的颜色,如255,255,255表示纯白色;0,0,0表示纯黑色,135,206,235表示天蓝色,然后通过图片的纵横坐标表示具体位置,由此构成一张图片,而视频就是一帧帧图片根据根据时间轴按序展示的。当然这些十进制的数据是二进制的形式存储在计算机中的。
Sound文件,将麦克风拾取的声音信号转换成下图的模拟电信号,并通过模数转换器(ADC)将其转换为数字信号,然后将数字信号存储在计算机硬盘驱动器或其他存储介质上。
数据类型转换
自动类型转换
类型范围小的变量可以直接赋值给类型范围大的变量,向上兼容,向下不兼容。
例如:
但范围小的变量赋值给范围大的变量时,会报错
例如:
因为在计算机中,byte的范围-128~127,二进制范围只有八位,10的二进制表示为00001010,
而double的范围则大多了,大约-1.79亿到1.79亿之间,二进制有六十四位,比byte多了56位,而这多出的位数极有可能因为转换成小范围的数据类型出现数据丢失,所以不兼容。
不同范围的数据类型进行运算时,得出的结果的数据类型由最大范围的数据类型决定
例如:
强制类型转换
但特殊情况下需要将范围大的数据类型赋值给范围小的数据类型也不是没有办法
存储范围小的数据类型 变量名 = (存储范围小的数据类型)存储范围大的变量、数据
例如:
强制类型转换的注意事项:
①:可能出现数据丢失。
②:小数强制转换成整数是直接截断小数保留整数。
运算符
基本算术运算符
符号 | + | - | * | / | % |
作用 | 加 | 减 | 乘 | 除 | 取余 |
取余是指,两数相处,将除数整除完后,剩下的余数。
"+"可以作为连接符,其结果还是个字符串,先碰到数字作数学运算符,如果先碰到字符则作为连接符,能算则算,不能算就在一起
例如:
自增自减运算符
自增++:放在某个变量前面或后面,对变量自身的值加一。
自减--:放在某个变量前面或后面,对变量自身的值减一。
注意:++、--只能操作变量,不能操作自变量。
++、--在前则先自增自减再运算,++、--在后则先运算后自增自减,但单独使用时,在前在后面都没有影响,但放变量前后会有明显区别。
package com.heima.demo;
public class Test {
public static void main(String[] args) {
int a = 10;
System.out.println(a++);
int b = 10;
System.out.println(++b);
int c = 10;
int d = 5;
int result = c++ + ++c - --d - ++d + 1 + c--;
System.out.println(result);
System.out.println(c);
System.out.println(d);
}
}
赋值运算符
在计算机中,例如int a = 20,并不是静态的表示等式左右相等,而是指将等式右边的20赋予给int类型的变量a,并覆盖掉a原本的值。
扩展赋值运算符:
注意;扩展的赋值运算符隐含了强制类型转换 。
关系运算符
> >= < <= == !=
关系运算符的结果只能是boolean类型,要么是false要么是true,常用于条件判断。
!= 的结果与 == 想法,符号左右不等于返回true,而等于会返回false。
package com.heima.demo;
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
boolean c = a < b;
boolean d = a == b;
boolean e = a != b;
System.out.println(c);
System.out.println(d);
System.out.println(e);
}
}
逻辑运算符
当需要多个条件同时判断时,则需要用上逻辑运算符了。
逻辑与, & ,例子:2 > 1 & 3 > 2,所有条件的结果都是true时,最终结果才是true。
逻辑或, | ,例子:2 > 1 | 3 < 5,所有的条件只有有一个能满足,最终结果就是true。
逻辑非, ! ,例子:!(2 > 1),取反,条件结果是true就输出false,反之则输出true。
逻辑异或, ^ ,例子: 2 > 1 ^ 3 > 1,前后条件的结果相同时,返回false,反之返回true。
&&:短路与,判断结果和&一样,但过程不同,只要左边结果是false,右边不执行,直接输出false。
||:短路或,判断结果和|一样,但结果不同,只要左边结果是true,右边不执行,直接输出true。
三元运算符
格式:条件表达式? 值1 : 值2获取三个整数中的最大值。
执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2。
例如:
package com.heima.demo;
public class Test {
public static void main(String[] args) {
//获取三个整数中的最大值
int a = 10;
int b = 20;
int c = 30;
//先比较任意两个数的值,找出这两个数中的最大值
int temp = (a > b) ? a : b;
//用前两个数的最大值与第三个数比较,获取最大值
int max = (temp > c) ? temp : c;
System.out.println("max = " + max);
}
}
键盘录入Scanner
为了使数据操作更灵活,需要用到一个实现保存在JDK中的API。
格式:
package com.heima.demo;
//①导包(IDEA自动生成)
import javax.swing.*;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//②创建一个新的容器用于存储键盘输入的数据
Scanner sc = new Scanner(System.in);
//③接收键盘输入的数据
int a = sc.nextInt();
double b = sc.nextDouble();
String c = sc.next();
}
}
只创建一个键盘输入对象sc,就能接收无数个键盘输入数据。
键盘输入的对象名可以随便取名,但需要定义不同数据类型的接收键盘输入数据。