Java核心基础

数据类型

基本数据类型(简单数据类型 - 语言内置的类型)

  • 布尔型 :boolean
 true			flase
 
 纯粹的java中 数值不能给boolean赋值
 boolean is /has/can
  • 字符型:char
16 位
0个符号位 16位 全部都是数值位
char c1 = 'a'			//	直接指定字面值
char c2 = 96			//ASCII
char c3 = '\u4e2d'		//i18n
char c4 = '\t'			//转移赐福

在ANSI编码当中 :

	中文占据2个字节
	英文占据1个字节

在Unicode编码当中:

	空文件会有两个字节
	

	
  • 整数类: byte short int(默认) long
整数类型:		byte short int long 			符号位(1)+ 数值位(n-1)
		 		8		16	32	64
		 	-128~127
		 	 int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)

long类型定义结束后可以+ L
比如打印一年的毫秒
System.out.println(365L*24*60*60*1000)				//在任意一个数字后面+ L即可 否则会出现超出int的取值范围
整数类型赋值方式:
int num1 = 25;		//	十进制赋值
int num2 = 025;		//	8进制赋值
int num3 = 0x25;		//	16进制赋值
Int num4 = 0b1011;		//2进制赋值 sinceJDK7.0
比如 byte n1 = 76;
76 = 64 + 8 + 4 = 0b000000001001100
所以byte n1 存储为 	01001100
                  	12345678
                  		1 符号位  (0正数 1负数)
  • 浮点类型:float double(默认)
float	32	(1 + 8 + 23)	F/f	符号位 + 幂指位 + 数值位

double	64	(1 + 11 + 52)	D/d


		符号位 + 幂指位 + 数值位
67.25  		:
		符号位: 0
		整数部分:67 = 1000011
		小数部分: 0.25 = 0.01

			0.25 * 2 = 0.5	0
			0.5 * 2 = 1		1
			0.0 * 2 = 0		0

	1000011.01 => 科学计数法 1.00001101 * 2(6)


	符号位   + 	幂指位(8)   +	 数值位(23个后面补充0)
	  0	           6 				00001101

幂指位(8)	
		默认值 01111111 = 127(8个2进制数的一半) 相当于0
		6 : 01111111 + 110 = 10000101

0 10000101 00001101000000000000000

===============================

System.out.println(2.0-1.1);

引用类型(自定义类型 - 自己写的类型 Object)

运算符

+ - * /

+

[+ :1 + 1 在什么情况下不能与2]
当字符串String和数值类型进行+链接的时候 不是代表算数运算 而是追加链接

System.out.println('1' + 1 + "1" );  		// char + int + String

在这里插入图片描述
String属于引用类型 是一个类

char + int + String
‘1’ + 1 + “1”

在这里插入图片描述

    char + int + String
    ‘1’ + 1 + “1”

	’1‘ 首先转换成int类型 49 49+1 = 50 再追加一个String = 501

* /

数值进行乘法运算的时候可能出现数据越界,发生溢出

  • int类型超过21亿的时候,就需要添加L
  • 商品价格7折优惠
int price = 1257;
price = price * 0.7;  //*.07 会牵扯到oirce强制类型转换成float
//java当中整数除以整数一定为整数
优化方案:
price = price *7/10;

% 1 0 -1

最终结果的符号位取决于参与运算的第一个数值
第一个数是正的 结果为 +
负 为 -

5 % 2===========1
5 % -2==============1
-5 % 2=============-1
-5 % -2==============-1

定义一个方法 要求传入一个int整数 返回一个Boolean值 判断奇数偶数

public static boolean check(int num){
	return ((num & 1) == 0);
}

+= -= *= /= %=

能够自动保持运算符左侧数据类型不发生任何变化

int mum = 1;
num = mun + 0.5 ; 			num += 0.5;
num 先强制类型转换成float		num保持int类型不变

java当中整数 / 整数一定是整数

> < >= <= = == !=

public static void main(String[] args){
	boolean isOk = false;
	if(!isOK){
		System.out.println("not ok");
	}
	
}

& | && ||

[&逻辑非短路运算符]
[&&逻辑短语运算符]

当通过前面的条件能够得出最终结论的时候,短路运算符号会舍弃之后没有必要的无用功

if(a<10 && a > 0 ){
	System.out.println(a);
}

&&:短路 如果a !< 10就不会进行第二个判断 

运用:

public static void main(String[] args){
	int num = 1;
	if(++num > 5 && ++num < 10){
	System.out.pirntln("随意");}
	Syetem.out.println(num)
}

两种运算符就会有不同的效果

++ –

[a :运算 b:取值 x++ => ba ++ x => ab]

& | ^ ~ 二进制按位运算符

18 & 15

		00010010
	& 	00001111
		00000010 = 2

当一个正数%2的n次方数的时候 将完全等价于&(这个数字的2(n)-1)

当实现权限控制权限的时候

		Unix:
				1 :执行权限
				2:写入
				4:读取
						chmod  777
							验证777
								7
							&	4

在这里插入图片描述

		java当中的修饰符static 相当于汉语中的修饰符
				public : 1
				static : 8

在这里插入图片描述

在这里插入图片描述

HashSet HashMap

must be a power of two ===⇒ 必须是个2的n次方

^ 按位异或运算符

相同是 0
不同是 1

如何不借助第三块空间交换两个值

int a = 3;
int b = 5;

a = a ^ b;
b = a ^ b;
a = a ^ b;

取反就是1为0,0为1,5的二进制位是0000 0101,取反后为1111 1010,值为-6

>> << >>> 位移运算符

3 << 2
  首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零
  移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是
  0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12。

相当于乘以2(2)
 例如11 >> 2,则是将数字11右移2位
计算过程:
11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是
0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。

相当于除以2(2)
		*2	*4	*8	*16	*32
		<<1	<<2	<<3	<<4	<<5

		/2	/4	/8	/16	/32
		>>1	>>2	>>3	>>4	>>5

源码 补码 反码

流程控制

分支:

				if else
				注意利用排他特性简化流程控制
			switch case
			

for

for(char c = 'a' ; c <= 'z' ; c ++){
	System.out.println((char)c)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值