Java基础复习(二)

Java基础第二天

1.常量 字符串常量 整数常量 小数常量 字符常量 布尔常量 空常量(null 数组部分讲解)

注意:字符常量 用单引号括起来的内容,里面只能放单个数字、单个字母或者单个符号 单引号内为空报错 空格可以

2.进制概述 进制是人们规定的一种进位方法 对于任何一种机制 X机制 逢X进1位

十进制的由来 人类有十个手指头

二进制的由来 莱布尼兹 看到易经 阴爻阳爻

科举制 努力就能成为人上人的一条路

1byte = 8bit

1k =1024b

二进制的表示方法 0b

八禁止0-7组成 以0开头

十进制

十六进制 0-9-a-f以0x开头

Scale进制

System.out.println(0b100); 输出为4

System.out.println(0100); 64

System.out.println(100); 100

System.out.println(0x100) 256

进制计算转换:

1.任意进制转十进制

系数:就是每一位上的数据

基数:X进制,基数就是X

权:在右边,从0开始编号,对应位上的编号,即为该为的权

结果:把系数*基数的权次幂相机即可

2.十进制转任意进制

除积倒取余数

1553603276100

1553603515670

3.快速的进制转换方法 8421码

4.原码反码补码

强制类型转换的时候有用到

原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,"1"表示负,其余位表示数值的大小

  • 通过一个字节,也就是8个二进制位表示+7和-7
  • 0(符号位) 000 111
  • 1(符号位) 0000111

反码:正数的反码与其原码相同;负数的反码是对其源码逐位取反,但符号位除外。

补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1

正数的原反补都是一样的,负数的补码为其反码末位+1

计算机运算的时候都以补码的形式运算的

  • 已知原码 求补码
  • 已知补码 求原码

5.变量

数据类型

变量名:合法的标识符

变量值:

数据类型 变量名 = 变量值

为什么要定义变量呢?当然是为了灵活扩充了,写死就不好玩了。

数据类型:Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同的内存空间。 类似于一个箱子,目的是为了节约内存。

数据类型 = 基本数据类型+引用数据类型

整数型

  • byte 占一个字节 -128-127
  • short占两个字节 -2^15~2^15-1
  • int 占四个字节(默认数据类型)
  • long 占八个字节 (数字后面加L 注意大写0.0 怕 l 让人以为1 )

浮点型

  • float 占四个字节 (记住加个f,最后面,不然可能导致精度损失的错误)
  • double 占八个字节 双精度(默认数据类型)

字符型

char占两个字节 0-65535

布尔型

boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是Java中的boolean类型没有明确指定他的大小。

1.作用域问题 同一个区域不能使用相同的变量名

2.初始化值问题 使用之前要赋值

3.一条语句可以定义多少个变量

数据类型转换

1.数据类型转换之隐式转换(小的转大的)------了解原理 字节之类的结构去理解

1553606701862

2.数据类型之强制转换 数字之前强制转换

3.强制转换的精度损失 byte之类的 这种是能准确的计算出来的 转换过程中砍掉了一部分 因为计算机在计算的时候都是其补码 求其原码就可以知道值了

4.面试题:

byte b1 = 3;
byte b2 = 4;
byte b3 = b1 +b2;//此处是变量
System.out.println(b3);

从两个方面

1.byte与byte或(short,char)进行运算的时候会提升为int,两个ini类型相加的结果也是int类型

2.b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围。

byte b4 = 3 + 4;//java编译器有常量优化机制
byte b5 = 7;

5.进行混合运算的时候,byte,short,char不会相互转化,都会自动提升为int类型,其他类型进行混合运算的是小的数据类型为大的。

float f = 12.3f;
long x = 123456;
//f = x;  //隐式转换
//System.out.println(f);
x = (long)f; //强制转换
System.out.println(x);

原理:

float 占4个字节

IEEE 754

32个二进制位

1位 代表符号位

8位代表指数位0000000-1111111

0 - 255

0代表0

255代表无穷大

1 - 254 然后都减去127

最后范围

-126 - 127

23位 代表尾数位

注意:这里不是很清楚

6.字符和字符串的加法

System.out.println('a'+1); //98  提升为了int类型 字符'a'  ,字符都用了二进制来一一对应ASCII
System.out.println((char)('a'+1)); // b
System.out.println("hello"+'a'+1); //helloa1任何数据类型用+与字符串相连接 都会产生新的字符串
System.out.println('a'+1+"hello")// 98hello 从左往右运算

7.char数据类型

char c1 = 97; //0 - 65535
System.out.println(c1) //a
//可以看看ASCII码表 有方片啥的 酷啊
//char类型是否可以存储中文 java采用Unicode编码 Unicode编码存取两个字节 因为一个中文汉字就是两个字节 所以可以存储一个汉字

8.运算符

对常量和变量进行操作的符号

运算符分类:算术、赋值、比较、

a: +号在java中有三种作用,代表正号、做加法运算、字符串的连接符

b:整数相除只能得到整数。有过想得到小数,必须把数据变化为浮点数类型。

c:/获取的是除法操作的商。%获取的是除法操作的余数。

%运算符:

当左边的绝对值小于右边值时,结果是左边

当左边的绝对值等于右边或是右边的倍数时,结果是0

当左边的绝对值大于右边绝对值时,结果是余数

%运算符结果的符号只和左边有关系,与右边无关

任何一个正整数%2结果不是0就是1

-12 % 5 =-2

单独使用(一样)

int a = 3;
a++;
++a;
System.out.println(a);

参与运算

int a = 3;
int b;
//b = a ++;
b = ++a;
System.out.println("a= " + a); //4 4
System.out.println("b = " + b); //3 4
//当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后自身再加1
//当++在变量前面的时候,会先自身加1,然后在结果赋值
int y = (x++)+(++X)+(x*10);  //70 这个题目就很牛逼
第三题问那句会报错,为什么
byte b = 10;
b++; //b = (byte)(b+1)
b = b + 1;//这里会损失精度,这里是int类型了
System.out.println("b = "+b);

赋值运算符

基本运算符 :=

int a = 3;

扩展运算符:+=,-=,*=,/=

面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由

short s = 1 ; s = s + 1;//错误
short s = 1; s+=1; // s = (short)(s+1);

关系运算符

==、!=、>,<

只有两个结果,true,false

本文链接:

https://heyzen.club/index.php/J/208.html
1 + 7 =
快来做第一个评论的人吧~