计算机进制
1. 计算机存储单元
字节(byte)计算机最小的存储单位——bit(位,比特位)
2.其他的存储单位
- 1b(字节) = 8 bit
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
3.进制运算
1.十进制 10 12 15
2.二进制 1010 1000,0010 0010
数据类型
1.基本数据类型
-
byte(字节型)内存占1字节,8位 范围-128~127
-
short(短整型)内存占2字节,16位 范围-32768~32767
-
int(整型)内存占4字节,32位 范围-2147483648~2147483647
-
long(长整型)内存占8字节,64位
范围-9223372036854775808~9223372036854775808 -
float(单精度浮点类型)
float的精度要远远高于 long ,int,short ,byte
内存占4个字节,32位
存储数据范围: 1.4E-45 ~ 3.4028235E38 -
double(双精度浮点类型)开发中强烈建议使用double
内存存贮8个字节,64位
数据范围:4.9E-324~1.7976931348623157E308
Double类型建议用来存储分数小数 -
Char(字符类型)
生活中填写履历表时,填写性别时用来表示
可存储单个字符,JVM对字符采用Unicode无符号进行编码
内存存贮空间占2个字节,16位
存储范围:0~65535范围内的非负数
字符常量;‘A’ ‘9’ ‘$’ ‘\t’ ‘\n’ ‘\’ ‘’ char类型常量只能写单个字符
char接收int类型常量赋值不能超出最大的范围
int整型变量赋值给char类型必须强制类型转化,因为int精度更高 -
boolean(布尔类型)
回家过年被亲戚问有没有对象 有ture 没有false 懂了把?
存储空间4个字节
java中boolean数据类型:数据计算结果只能是(ture)对与(false)否
是逻辑判断应用的数据类型
ture和false又被称为布尔类型常量
标准JVM规范定义java语言中在计算机底层使用int类型存储booean类型数据
由于JVM实现的不同,处理booean类型底层存储也会有所不同
public class Demo{
public static void main(String[] args){
/*整型*/
//short 存储范围是-32768~32767(2字节)
short b = 12;
System.out.println(b);
//int 存储范围是-2147483648~2147483647(4字节)
int i = 10;
System.out.println(i);
//byte 存储范围是-128-127(1字节)
byte b = 12;
System.out.println(b);
//long 存储范围是-9223372036854775808~9223372036854775808(8字节)
long l = 15;
System.out.println(l);
/*浮点型*/
//float 1.4E-45 ~ 3.4028235E38(4个字节)
float f = 3.6f;
System.out.println(f);
//double 数据存储范围是4.9E-324~1.7976931348623157E308(8个字节)
double d = 3.5;
System.out.println(d)
/*字符型*/
//char 存储范围是0~65535范围内的非负数(2个字节)
char c = '男';
System.out.println(c);
/*布尔型*/
//boolean 只有true/false两种结果(4个字节)
boolean b = true;
System.out.println(b);
}
}
2.引用数据类型
String的简单使用
public class StringDemo {
public static void main(String[] args) {
String str = "学习";
System.out.println (str);
}
}
3. 扩展 转义字符的使用
//使用转义符号输出特殊的字符
System.out.println("输出单引号"+'\'');
System.out.println("输出换行符"+'\n');
System.out.println("输出tab键"+'\t'+"结果");
强制类型转换
1. 自然转换
由低精度向高精度数据类型转换
byte > short > int > long > float > double
低精度变量 = (低精度数据类型)高精度数据;
int age = (int)60.5;
float money = (float)500010.38;
2. 强制转换
高精度变量 = (高精度数据类型)低精度数据;
flo = (float) dou;
3. 代码练习
float f1 = 3.7f;
int intTestF = (int) f1;
System.out.println (intTestF); //3
double d1 = 1.2;
int intTestD = (int)d1;
System.out.println (intTestD); //1
变量
**可以自定义赋值的量**
- 定义格式:
数据类型 变量名 赋值符号 数值
int i = 10;
double d = 3.5F;
d = 3.6;
System.out.println(d);
2. 代码演示:
public class VaribleDemo {
public static void main(String[] args) {
double d = 3.5F;
d = 3.6;
System.out.println(d);
String str = "兔子";
str = "兔子15岁";
System.out.println (str);
}
}
3. 注意事项
如果给final修饰的变量赋值,就会报错,已经变成了常量了。
final int i = 10;
i = 20;
System.out.println (i);
运算符
1. 算数运算符 :+, - ,、%,++,–*
算数运算符 | 运算规则 | 例子 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
+ | 连接符 | "我是" + "兔子" | 我是兔子 |
+ | 加号 | 1 + 3 | 4 |
- | 负号 | -3 | 3 |
- | 减号 | 4-1 | 3 |
***** | 乘号 | 3*5 | 15 |
/ | 除 | 3/3 | 1 |
% | 取模 | 10/3 | 1 |
++ | 自增 | int i = 1; ++i/i++ | 2 |
– | 自减 | int i = 1; --i/i– | 0 |
- 代码演示
/*演示操作运算符
1. +, - ,*、%,++,--
2. */
public class OperatorDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println (a + b);
System.out.println (a - b);
System.out.println (a / b);
a = 3;
System.out.println (b % a);
//演示 ++ --
System.out.println ("分割线演示后置++——————————————");
int c = 5;
c++;
System.out.println (c); //6
c--;
System.out.println (c); //5
System.out.println ("分割线演示前置++——————————————");
int d = 5;
++d;
System.out.println (d); //6
--d;
System.out.println (d); //5
System.out.println ("分割线演示前置++与后置++的区别——————————————");
int f= 10;
int e = 2;
int g =++e + f;
System.out.println (f+e); //13
System.out.println (g); //13
}
}
注意:前置++和后置++的区别:前置 ++ 再+1在晕眩,后置 ++ 再运算在+1
2. 关系运算符:> >= == != < <=
运算符 | 运算规则 | 例子 | 结果 |
---|---|---|---|
> | 大于 | 3>2 | true |
>= | 等于大于 | 2>=2 | true |
== | 等于等于(相等于) | 3==3 | true |
!= | 不等于 | 1!=2 | true |
< | 小于 | 3<2 | false |
<= | 小于等于 | 3<=2 | false |
- 代码演示
// > >= == != < <=
System.out.println (10 > 20);
System.out.println (10 >= 20);
System.out.println (10 == 20);
System.out.println (10 != 20);
System.out.println (10 < 20);
System.out.println (10 <= 20);
3. 逻辑运算符:& | ! ^ && ||
运算符 | 运算规则 | 例子 | 结果 |
---|---|---|---|
& | 逻辑与 | true & false | false |
| | 逻辑或 | true | false | true |
! | 逻辑非 | !true | false |
^ | 异或 | true ^ false | false |
&& | 短路与 | true && false | false |
|| | 短路或 | false || true | true |
- 代码演示
boolean b0 = true;
boolean b1 = false;
System.out.println (b0 & b1); //false
System.out.println (b0 | b1); //true
System.out.println (!b0 ); //false
System.out.println (b0 ^ b1); //true
System.out.println (b0 && b1); //false
System.out.println (b0 || b1); //true
4. 三元运算符(条件判断)
- 运算规则
运算规则:boolean?值1:值2; 前面位true 取值1否则取值2
- 代码演示
int i3 = 10;
int i4 = 20;
int i5 = i3> i4?5:6;
System.out.println (i5); //6
5. 赋值运算符&字符串连接符+,char码表对应
运算符 | 运算规则 | 例子 | 结果 |
---|---|---|---|
= | 赋值 | int i = 10; | 10 |
+= | 加后赋值 | int i = 10; i+=2; | 12 |
-= | 减后赋值 | int i = 10;i -= 2; | 8 |
*= | 乘后赋值 | *int i =10; i =2 | 20 |
/= | 除后赋值 | int i = 10; i/=2; | 5 |
%= | 取余后赋值 | int i = 10; i %= 3; | 1 |
- 代码演示
public class OperatorDemo2 {
public static void main(String[] args) {
int a = 10;
int b = a + 20;
System.out.println (b); //30
// int c += a;
a += a; //int a = a + 10;
System.out.println (a); //20
int c = 20;
System.out.println (c -= 30); //-10
int d = 10;
System.out.println (d *= d); //100
int e = 20;
System.out.println (e %= e); //0
//byte short
byte by = 10;
byte by1 = 20;
//默认的整型是 int
byte by2 = (byte)(by + by1);
System.out.println (by2); //30
int f = 10;
f += 20;
System.out.println ("这里是int d的加和: " + f); //这里是int d的加和: 30
//字符串的链接
String str1 = "我爱";
String str2 = "兔子";
System.out.println (str1 + str2); //我爱兔子
//char
char ch1 = 'h';
char ch2 = 's';
System.out.println (ch1 + ch2); //219
}
}
6. 位运算符
是将数据在内存中二进制存储按照位运算计算出最终结果
& 按位与相当于并且(对整型和布尔计算)
| 按位或相当于或者(对整型和布尔计算)
~ 按位非(只对整型计算)
^ 按位异或(对整型和布尔计算)
1. & 与运算符
- 与&运算符说明
两个二进制操作数对应位同为1 结果位 才为1,其余情况为0;
- 与&运算符计算规则
计算规则:
1. 用于boolean表达式计算规则:
true & true 结果为true
true & false 结果为false
false & false 结果为false
2.对整数运算
如果2个整数对应位都是1 则结果为1, 否则为0
1 并 1 结果为0
1 并 0 结果为0
0 并 1 结果为0
0 并 0 结果为0
- 与&运算符基本定义使用demo
public class BinaryCount {
/*java主方法*/
public static void main(String[]args){
int n = 50;
int m = 60;
int age = 18;
boolean bool1 = n > m & ++age == 18;
System.out.println("计算结果是"+ bool1);
System.out.println("age计算结果是" + age);
/*按位与对整数计算*/
//开发中常用 底层计算的时候用的到
int a = 7;
int b = 8;
int a_b = a&b; // a 与 b 进行底层按位与计算
System.out.println("a与b按照底层按位与的计算结果是" + a_b);
//输出a和b在底层二进制形式
String a_bit = Integer.toBinaryString(a);
String b_bit = Integer.toBinaryString(b);
System.out.println(a_bit);//111
System.out.println(b_bit);//1000
//7的二进制是 0111
//8的二进制是 1000
//按位与对整数运算 0000
}
}
2. 或 | 运算符
- 或 | 运算符说明
==两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0
- 或 | 运算符计算规则
1.用于表达式计算规则:
true | true 结果为true
true | false 结果为true
false | false 结果为false
2.对整数运算
两个数对于位只要由一个为1则为1,否则为0
1 并 1 结果为1
1 并 0 结果为1
0 并 1 结果为1
0 并 0 结果为0
- 或 | 运算符基本定义使用demo
//运算得到整数
int n2_n3 = n2|n3;//按位或运算
System.out.println(n2+"的二进制是"+ Integer.toBinaryString(n2));
System.out.println(n3+"的二进制是"+ Integer.toBinaryString(n3));
System.out.println("按位或运算结果是"+n2_n3);
// 5的二进制是 0101
// 8的二进制是 1000
// 按位或对整数运算 1101
}
}
3. ^ 异或运算符
- 异或 ^ 运算符说明:
两个二进制操作数对应位相同为0,不同为1
- 异或 ^ 运算符计算规则
1.用于表达式计算规则:
对boolean布尔表达式运算(2个 布尔表达式计算结果相同则最终结果是false,否则为true)
false ^ false 结果为false
true ^ true 结果为false
false ^ true 结果为true
true ^ false 结果为true
- 异或 ^ 运算符基本定义使用demo
public class BitwiseXor {
/*JAVA程序主方法*/
public static void main(String[]args){
System.out.println(true^true); //结果是false
System.out.println(false^false);//结果是false
System.out.println(true^false);//结果是true
System.out.println(false^true);//结果是true
System.out.println(5>6^6==7);//结果是false
System.out.println(!false^false);//结果是true
System.out.println(true^8==8);//结果是false
System.out.println((34 > 35 && 2<3)^true);//结果是true
/*按位异或运算对整型运算*/
int a= 5;
int b= 7;
System.out.println("5的二进制是" + Integer.toBinaryString(a));
System.out.println("7的二进制是" + Integer.toBinaryString(b));
System.out.println("5和7的异或二进制计算结果是" + (a^b));
//5的二进制是 101
//7的二进制是 111
//按位异或对整数运算 1101
}
}
7. 特殊运算符
new | price只用作创建某个引用数据类型的对象 |
---|---|
. | 某对象对属性或方法的引用访问符号 |
() | 包围被有限运算的表达式或方法标志 |
[ ] | 数组类型数据的标志 |
instanceof | 判断某对象或引用是否属于某种类型 |
- 使用实例
import java.util.Scanner;
public class EspecialPro {
/*
* Java中特殊运算符
* */
//编写主方法
public static void main(String[] args) { //[] 是数组的标志
Scanner scan = new Scanner(System.in); //new的作用是创建对象
System.out.println("请输入一个数"); //这里的 . 符号是个访问符号
double d =3.5; //此处的 . 表示一个浮点
d = (600+500)/20; //此处的()表示是一个优先运算的符号
/*instanceof 用来判断某个对象是否是某个数据类型
* 如果是属于这个类型则返回true,斗则返回false。
* */
boolean bool = scan instanceof java.util.Scanner;
System.out.println(bool);
}
}