JAVA 基础知识(二)
文章目录
一、进制
- 进制:就是一种进位制
就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。
二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
二进制数据:由0 1组成 以0b开头
八进制数据:由0-7组成 以0开头
十进制数据:由0-9组成 整数默认是十进制的
十六进制数据:0-9 A-F组成 0x100 以0x开头
二、进制转换法
- 位权展开法
-
8421码是最常用的BCD码
三、原码,反码,补码
- 计算机底层运算时,他用的是补码来运算的,我们看到的是原码
- 一个数据的二进制表现形式,但是会有符号位
- 最高位作为符号位:0表示正数,1表示负数;其余作为数值位
- 正数的原码反码补码,都是一样的
- 负数的反码:在其原码基础上,符号位不变,其余位取反,1变0,0变1.
- 负数的补码:在其反码的基础上,末位+1
四、变量
-
变量:在程序执行过程中,其值可以发生变化的量;
-
变量,其实就是在内存中开辟一小块空间。
-
Java中变量的定义方式:数据类型 变量名=值
生活中的例子:苹果的价格 price=3.5/kg price=2.5/kg
- 数据类型:限定这个数据的范围,限定你是何种类型
- 数据类型:基本数据类型 和 引用数据类型
- 基本的数据类型:四类八种
- 整数型
- byte 占1个字节(8bit) 所代表的整数范围 -128(只有补码 10000000)----- 127 思考:为什么 byte 的范围是-128-----127 呢?
- short 占2个字节(16bit) -2^15~ 2^15 - 1
- int 占四个字节(32bit) -2^31 ~ 2^31 - 1
- long 占8个字节(64bit) -2^63 ~ 2^63 - 1
- 浮点型
- float 占4个字符(32bit) -3.40310^38 ~ 3.40310^38
- double 占8个字节(64bit) -1.79810^308 ~ 1.79810^308
- 布尔型
- boolean 占1个字节
- 字符型
- char 占2个字节 2(16bit) 使用单引号,引起来的单个字符。0 ~ 2^16 - 1 = 65535
- 定义变量的注意事项
- 在同一作用域不能定义同名变量,所谓作用域,指的是,同一对大括号,用扩起来的范围。
- 变量必须赋值才能使用
- 定义float类型的变量
- 练习1:
class BianLiang{
public static void main(String[] args) {
//变量名,符合我们之前的通用规则人,一般小写,studentName
byte a=-128;
byte b=127;
short c=300;
int d=20000;
//定义long类型的变量,注意值的后面加上一个后缀L表示这是一个long类型的值
long num=200000L;
//定义float类型的变量时,注意值的后面加上一个后缀F表示这是一个float类型的值
float f=3.14F;
double price=5.2;
//定义布尔类型的变量,值就俩个 true 和 false
boolean flag=true;
boolean falg2=false;
//定义字符类型的变量,注意只是单引号引起来的单个字符
char ch='a';
char ch2='好';
//根据变量名,来输出不同的值
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(num);
System.out.println(f);
System.out.println(price);
System.out.println(flag);
System.out.println(falg2);
System.out.println(ch);
System.out.println(ch2);
}
}
- 练习2:
class BianLiang2{
public static void main(String[] args) {
//定义变量的注意事项
//1.在同一作用域里面,所扩充起来的范围。
//作用域:同一对大括号,所括起来的范围。
int a=100;
//int a=100;报错
a=200;//重新赋值
int num;
//2.变量必须赋值,才能使用
num=20;
System.out.println(num);
System.out.println(a);
}
}
五、隐形转换
class DataType{
public static void main(String[] args) {
byte a=1;
byte b=2;
short c=3;
long d=1L;
float f=3.2F;
//double g=1.2;
//数据类型的隐形式转换(数据类型的自动提升)
//当byte short char 类型的变量,在参与运算时,会自动提升为int类型,
//如果还有 long float double 类型的变量参与运算则会相应的提升为 long float double 类型
//byte1个字节
//int 4个字节
//long8个字节float4个字节float所表示的范围要比long表示的范围要大
float sum=a+b+c+d+f;
System.out.println(sum);
}
}
六、强制转换
class DataType2{
public static void main(String[] args) {
byte a=125;
byte b=118;
//如果你一定要拿一个字节来接收结果,可以,你可以进行强制类型转换
//强制类型转换:丢弃掉多余字节,只保留目标字节,这样做,有可能会造成精度损失。一般不建议使用,除非你有特殊需求
byte sum=(byte)(a+b); //byte参与运算结果提升为int类型,是4个字节,那么你要强转成byte类型,那就会丢弃前三个字节,保留一个字节。
System.out.println(sum);
double num=5.23528;
int n=(int)(num); //把double类型,强转成int类型,就会丢弃掉小数部分。
System.out.println(n);
}
}
- 强制转换的格式
- 目标数据类型 变量名=(目标数据类型)(被转换的数据);
class DataType3 {
public static void main(String[] args) {
//整数默认是int类型,小数默认是double类型
System.out.println(200);
System.out.println(3.25);
float f=3.25F; //加后缀
//或者这样写
float f2=(float)3.5888;
System.out.println(f);
System.out.println(f2);
// byte b =130; 报错,超过了byte所代表的整数范围
byte b =(byte)130;
System.out.println(b); // -126
}
}
class DataType4{
public static void main(String[] args) {
byte b1 = 3;
byte b2 = 4;
//类型的隐式转换
//byte b3 = b1 + b2; 报错
//常量优化机制,当多个常量参与运算,他会把结果先算出来,看有么有在这个数据类型的范围内,如果在就不报错,不在就报错了
byte b4 = 3 + 4;
System.out.println(b4);
char ch='你'; //Unicode编码 GBK(ANSI) 一个汉字占两个字节,char类型也就是两个字节,所以就可以
System.out.println(ch);
//数据类型的隐式转换(数据类型的自动提升)
//当 byte short char 类型的变量,在参与运算时,会自动提升为int类型,
//如果还有 long float double 类型的变量参与运算则会相应的提升为 long float double 类型
char ch1='a'; //97 英文字符在参与运算时,会对照ASCII码表中该字符的10进制值
//记住 'a' 97 'A' 65 '0' 48
int sum=ch1+1;
System.out.println(sum); //98
}
}
七、常用的ASCII码
‘0’ 48 ‘A’ 65 ‘a’ 97
为了便于查询,以下列出ASCII****码表:第128~255号为扩展字符(不常用) | |||||||
---|---|---|---|---|---|---|---|
ASCII码 | 键盘 | ASCII 码 | 键盘 | ASCII 码 | 键盘 | ASCII 码 | 键盘 |
27 | ESC | 32 | SPACE | 33 | ! | 34 | " |
35 | # | 36 | $ | 37 | % | 38 | & |
39 | ’ | 40 | ( | 41 | ) | 42 | * |
43 | + | 44 | ’ | 45 | - | 46 | . |
47 | / | 48 | 0 | 49 | 1 | 50 | 2 |
51 | 3 | 52 | 4 | 53 | 5 | 54 | 6 |
55 | 7 | 56 | 8 | 57 | 9 | 58 | : |
59 | ; | 60 | < | 61 | = | 62 | > |
63 | ? | 64 | @ | 65 | A | 66 | B |
67 | C | 68 | D | 69 | E | 70 | F |
71 | G | 72 | H | 73 | I | 74 | J |
75 | K | 76 | L | 77 | M | 78 | N |
79 | O | 80 | P | 81 | Q | 82 | R |
83 | S | 84 | T | 85 | U | 86 | V |
87 | W | 88 | X | 89 | Y | 90 | Z |
91 | [ | 92 | \ | 93 | ] | 94 | ^ |
95 | _ | 96 | ` | 97 | a | 98 | b |
99 | c | 100 | d | 101 | e | 102 | f |
103 | g | 104 | h | 105 | i | 106 | j |
107 | k | 108 | l | 109 | m | 110 | n |
111 | o | 112 | p | 113 | q | 114 | r |
115 | s | 116 | t | 117 | u | 118 | v |
119 | w | 120 | x | 121 | y | 122 | z |
123 | { | 124 | | | 125 | } | 126 | ~ |
八、字符
运算符、拼接符,傻傻分不清楚
- +号的作用
- 作用1:充当相加的作用,也就是个数学运算符
- 作用2:起拼接符的作用,当+号运算俩端,只要任意一端是个字符串,就会起拼接作用,把俩端内容拼接起来
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
九、运算符
- 运算符:对变量或常量进行运算的符号
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
9.1 算数运算符
学到这,晚上睡觉都睡不着😭😭,各种++,–,一起先来看看概念吧
-
++,–运算符的作用:自加(++)自减(–)运算
-
++:自加。对原有的数据进行+1
-
–:自减。对原有的数据进行-1
-
–;++;单独使用时,放前后没有区别;
-
混合使用时:++放在后面,先使用,后运算,++放在前面,先运算后使用
-
好了,看着概念是不是很简单,让我们先来练练题
int a=1;
int b=2;
a++;
++b;
System.out.println(a++);//a=2
System.out.println(++b);//b=4
- 最基础的,是不是很简单,俺们继续:
int a=9;
a++;
++a;
System.out.println(++a+a++);//24
- 接着来了哦
int a=2;
a++;
System.out.println(++a+a++);//7
System.out.println(a++);//5
System.out.println(a++);//6
int i=5;
int a=++i+(i++)+(i++)+(i++)+(++1)+(++1);
System.out.println(i);//49
- naoguazi是不是嗡嗡的,让我们继续
int x=10,y=10;
System.out.println((x++)>10?(++y+(++x)):(--y+--x));//19
以上习题特别感谢@naoguaziteng提供, 在不了解三元运算符的时候,上面最后一题让我百思不得其解;
- 还有,我们接着继续;
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
//a=9
//b=10
//c=8
- 终极习题:
int y=1;
int r=1+(y++)+10-(++y)+2-(y--)+1+(--y)+5;
System.out.println(r);//r=15
System.out.println(y);//y=1
练习就到这里了,搞了这么多题,想必现在脑瓜子嗡嗡的吧,别急,慢慢来,以后如果有遇见更有意思的题会跟大家分享
9.2 赋值运算符
- 赋值运算符都有哪些?=,+=,-=,*=,/=,%=
- 基本的赋值运算符:=
- 把=右边的数据赋值给左边。
- 赋值运算符要求左边的数据必须是一个变量
int y=10;
y=y+5;
//等价于
y+=5;
9.3 关系运算符
- == ,!= , < , > , <= , >= , instanceof;
- 无论你的操作是简单还是复杂,结果是boolean类型。
class BJYSF {
public static void main(String[] args) {
//A:比较运算符有哪些
//== ,!= , < , > , <= , >= , instanceof(后面讲解)
// == 和 = 的区别
//比较运算符的运算结果,是布尔类型
int x=20;
int y=10;
boolean b=5<3; //false
b=5==5; //注意比较两个数是否相等,用 ==号
b=x!=y;
System.out.println("b:"+b);
System.out.println(10>10);
System.out.println(x==y);
}
}
是复杂,结果是boolean类型。
class BJYSF {
public static void main(String[] args) {
//A:比较运算符有哪些
//== ,!= , < , > , <= , >= , instanceof(后面讲解)
// == 和 = 的区别
//比较运算符的运算结果,是布尔类型
int x=20;
int y=10;
boolean b=5<3; //false
b=5==5; //注意比较两个数是否相等,用 ==号
b=x!=y;
System.out.println("b:"+b);
System.out.println(10>10);
System.out.println(x==y);
}
}