Java基础复习(二)

Java基础复习(二)

1、java中的数据类型【数据的单位】:
java是一个强类型的编程语言 所有的变量在第一次出现的时候,必须有数据类型

面试题:
java中的数据类型分为几种?
2种、无数种

基本数据类型 简单数据类型[程序里面自带的数据类型]

​ 面试题:
​ 基本数据类型分为几种
​ 4类8种

布尔类型:boolean 只能使用true/false进行赋值
​ 不能使用数字进行赋值

​ 应用场景:
​ 判断一个数字是不是偶数
​ 判断一个人的性别是不是男生

boolean x = true
boolean y = false;

字符类型:char 底层基于Unicode编码实现的
​ 不区分中英文 统一都是2个字节 = 16位

​ 应用场景:长度为1的元素
​ 一个英语单词的首字母 -> char

char x1 = 'a';//指定字面值的赋值方式
char x2 = '中';//指定字面值的赋值方式
char x3 = '\t';//转义字符
 \t	   \r	  \b	\n
制表符 返回行首 退格键 换行
char x4 = 55;//通过ascii编码进行赋值【0-65535】char x5 = '\u4e2d';//通过Unicode编码进行赋值

整数类型:符号位[1] + 数值位[n-1]
取值范围:-2(n-1)到2(n-1)-1

​ n-1:符号位占用一个位
​ -1:0占用一个位

​ 应用场景:
​ 一个人的年龄
​ 描述年份 、 月份 、 天数
​ 保质期
​ 人口数

	    byte short int	long
​	位	 8	 16	   32	64
​	字节  1	 2	   4	8

  • *:整数类型默认是int类型

  • *:long类型结尾的时候需要加L/l 尽量写L

  • *: 如果一个数值超出int类型最大边界的话 注意使用long类型

int num1 = 55;//十进制进行赋值
int num2 = 055;//八进制进行赋值	0【0-7】
int num3 = 0x55;//十六进制进行赋值 0x[0-9 a-f]
int num4 = 0b1011;//二进制进行赋值 0b[0-1]

范围
​ byte:-128 127
​ short:-32768 32767
​ int:-2147483648 2147483647
​ long:-XXXXXXXXX XXXXXXXX

浮点类型:符号位 + 幂值位 + 数值位
​ 工资 4500.0
​ 单价: 45.0

​ float double
​ 32 64
​ *
​ F/f D/d

​ float:符号位1 + 幂值位8 + 数值位23
​ double:符号位1 + 幂值位11 + 数值位52

整数类型二进制之间的转换

浮点类型和二进制之间的转换

十进制和二进制之间的转换

引用数据类型 自定义数据类型[程序员自己开发的数据类型]

//随机的三位数:
int x = (int)(Math.random() * 900 + 100)
//随机的小写的字母a-z:
char y = (char)(Math.random() * 26 + 97)
//随机的大写的字母:A-Z
char z = (Math.random() * 26 + 65)

java中的运算符
+ - * / %
[+:当+遇到String类型的时候 不再表示算数加法 而是表示追加连接]

int num = 45;
String x = num + "";
  • [*:当心数值超出int类型最大边界 注意使用long类型] System.out.println(365L * 24 * 60 *
    60 * 1000);

  • [/:当整数除以整数的时候 结果一定是整数] 7 / 2 = 3

  • [%:取模运算符 求余数 最终结果的符号位取决于参与运算的第一个数的符号] x % 8 == 0

    *+= -= = /= %=…
    [他们可以保证运算符的左边的数据类型不发生改变 -> 隐式的强制转换
    面试题:

short x = 1;
x = x + 1;//可能损失精度
System.out.println(x);//报错
short y = 1;
y += 1;//y = (short)(y + 1);
System.out.println(y);//2	

++ – [自增自减运算符]
[a:取值 b:运算 x++:ab ++x:ba]
> < >= <= ! = != ==
> < >= <= : 判断大小 -> boolean 值:true/false
!:非 !boolean !true = false !false = true
!=:判断左右两边的值是否不相等

System.out.println(45 != 55);//true

=和==之间的区别?
=:赋值运算符 将右边的值交给左边的变量保管

int x = 45;

==:判断左右两边的值是否相等

System.out.println(45 == 55);//false

&& || & |[逻辑运算符]

面试题:
&&和&之间的区别?
相同点:&&和&都是逻辑的与 相当于汉文字并且的意思
需要前后两个条件都成立才可以

不同点:&&叫做逻辑的短路与 有短路特性
短路特性:如果通过前面的条件可以得出最终结果的话
后面的条件直接舍弃 不再判断

面试题:
||和|之间的区别?
相同点:||和|都是逻辑的或 相当于汉文中或者的意思
需要前后一个条件成立就可以

不同点:||叫做逻辑的短路或 有短路特性
短路特性:如果通过前面的条件可以得出最终结果的话
后面的条件直接舍弃 不再判断

& | ^ ~ [按位运算符]

基础应用:
&:按位的与 要求上下二进制都是1的时候才写
|:按位的或 要求上下只要有1就写1
^:按位的异或 要求上下不一样的时候就写1
~:按位的取反
&:在某些情况下可以取代%
当我们拿着一个正数%上2的n次方数的时候
结果等价于
我们拿着这个正数&上2的n次方数-1的结果

System.out.println(100 % 8);//xxxx
System.out.println(100 & 7);//二进制
	**&**:可以再某些情况下取代%
	x % 2(n) == x & 2(n)-1
	x % 2 == 0 -> (x & 1) == 0
	x % 4 == 0 -> (x & 3) == 0

^: 可以不借助第三块空间的方式交换两个变量的值

int x = 45;
int y = 90;
//创建第三块空间
int z = x;
x = y;
y = z;
//不创建第三块空间
x = x ^ y;
y = x ^ y;
x = x ^ y;

只能使用char byte short int long boolean

<< >>[位[二进制]移运算符]
<<相当于乘以 >>相当于除以
移动多少位相等于乘以/除以2的几次方数
*2 *4 *8 *16…*2(n)
<<1 <<2 <<3 <<4…<<n

/2 /4 /8 /16…/2(n)
>>1 >>2 >>3 >>4…>>n

在计算机里面 如何高效的求出2的3次方数?
2 << 1 << 1
2 << 2
在计算机里面如何高效的求出2的31次方-1的结果
2 << 30 - 1

? : [三目运算符 三元运算符]
boolean ?2 :3
第一部分需要放一个boolean类型的判断句
如果第一个为true 那么执行第二部分
如果第一部分为false 那么执行第三部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值