Java SE day01_基础知识

Java基础知识

在Java中针对整数常量提供了四种表现形式

A:二进制 由0,1组成。以0b开头。
B:八进制 由0,1,…7组成。以0开头。
C:十进制 由0,1,…9组成。整数默认是十进制。
D:十六进制 由0,1,…9,a,b,c,d,e,f(大小写均可)组成。以0x开头。

基本数据类型

	*A:整数*			占用字节数
		byte		|			1
		short		|			2
		int 		|			4
		long		|			8
	*B:浮点数*
		float		|			4
		double	    |			8
	*C:字符*
		char		|			2
	*D:布尔*
		boolean		|			1	
		-------------------------
		ASCII码值
		a			|			97
		A			|			65
		0			|			48
	注意:
		整数默认是int类型,浮点数默认是double。
		长整数要加L或者l。
		单精度的浮点数要加F或者f。

数据类型转换(掌握)

(1)boolean类型不参与转换
(2)默认转换
	A:从小到大
	B:byte,short,char -- int -- long -- float -- double
	C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
	A:从大到小
	B:可能会有精度的损失,一般不建议这样使用。
	C:格式:
		目标数据类型 变量名 = (目标数据类型) (被转换的数据);

运算符(掌握)

(1)算术运算符

1. A:+,-,*,/,%,++,--
2. B:+的用法

		a:加法
		b:正号
		c:字符串连接符
	

3. C:/和%的区别

		数据做除法操作的时候,/取得是商,%取得是余数
	

4. D:++和--的用法
	

	a:他们的作用是自增或者自减
	b:使用
		单独使用
			放在操作数据的前面和后面效果一样。
			a++或者++a效果一样。
		参与操作使用
			放在操作数的前面:先自增或者自减,再参与操作
				int a = 10;
				int b = ++a;
			放在操作数的后面:先参与操作,再自增或者自减
				int a = 10;
				int b = a++;

(2)赋值运算符

 5. A:=,+=,-=,*=,/=,%=等
	B:=叫做赋值运算符,也是最基本的赋值运算符
		int x = 10; 把10赋值给int类型的变量x。
	C:扩展的赋值运算符的特点
		隐含了自动强制转换。

(4)逻辑运算符

	A:&,|,^,!,&&,||
	B:逻辑运算符用于连接boolean类型的式子
	C:结论
		&:有false则false
		|:有true则true
		^:相同则false,不同则true。
			情侣关系。
		!:非true则false,非false则true
		&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
		||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。

(5)位运算符(了解)

	A:^的特殊用法
		一个数据针对另一个数据位异或两次,该数不变
		
	<<:左移	左边最高位丢弃,右边补齐0
		<< 把<<左边的数据乘以2的移动次幂
	>>:右移	最高位是0,左边补齐0;最高为是1,左边补齐1
		>> 把>>左边的数据除以2的移动次幂
	>>>:无符号右移 无论最高位是0还是1,左边补齐0
	
	B:面试题
		a:请实现两个变量的交换
			**采用第三方变量
			**用位异或运算符
				左边a,b,a
				右边a^b
		b:请用最有效率的方式计算出2乘以8的结果
			2<<3

(6)三元运算符

	A:格式
		比较表达式?表达式1:表达式2;
	B:执行流程:
		首先计算比较表达式的值,看是true还是false。
		如果是true,表达式1就是结果。
		如果是false,表达式2就是结果。
	C:案例:
		a:比较两个数据是否相等
		b:获取两个数据中的最大值
		c:获取三个数据中的最大值

键盘录入

//导包
import java.util.Scanner
//创建录入对象
Scanner sc = new Scanner(System,in);
//获取录入
int x = sc.nextInt();
输出
System.out.println(x);

把HelloWorld案例写了一个带注释的版本

	后面我们要写一个程序的过程。
	需求:
	分析:
	实现:
	代码体现:

面试题:

		第一题
			short s = 1;
			s = s + 1;	
			short s = 1;
			s += 1;
			请问上面的代码哪个有问题?
			答案:
					第二个扩展运算符隐含了一个强制类型转换
					s +=1
					其实不是		s = s +1;
					其实是 	s = (s的数据类型) (s + 1);
			
		A:下面两种方式有区别吗?
			float f1 = 12.345f;
			float f2 = (float)12.345;
			
		B:下面的程序有问题吗,如果有,在哪里呢?
			byte b1 = 3;
			byte b2 = 4;
			byte b3 = b1 + b2;
			byte b4 = 3 + 4;
			
		C:下面的操作结果是什么呢?
				byte b = (byte)130;
				
		D:字符参与运算
				是查找ASCII里面的值
				'a'		97
				'A'		65
				'0'		48	
				System.out.println('a');
				System.out.println('a' + 1);

		E:字符串参与运算
				这里其实是字符串的连接
				System.out.println("hello"+'a'+1);
				System.out.println('a'+1+"hello");
				System.out.println("5+5="+5+5);
				System.out.println(5+5+"=5+5");


		F:	  00000000 00000000 00000000 00000011
			~ 11111111 11111111 11111111 11111100取反(补码)
			补码 11111111 11111111 11111111 11111100
			反码 11111111 11111111 11111111 11111011
			源码 10000000 00000000 00000000 00000100
			输出  -4
			
		G:交换两个数值,面试用(开发中少用)
		   a= a^b;
		   b=a^b;
		   a=a^b;
		   实现a和b交换

1:switch语句(掌握)

格式解释说明:
		switch:说明这是switch语句。
		表达式:可以是byte,short,int,char
			JDK5以后可以是枚举
			JDK7以后可以是字符串
		case:后面的值就是要和表达式进行比较的值
		break:表示程序到这里中断,跳出switch语句
		default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
		return:跳出函数
面试题
	switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
		可以,不可以,JDK7以后可以

2:循环语句(掌握)

(1)有三种:for,while,do...while
(2)for循环语句
	A:格式
		for(初始化语句;判断条件语句;控制条件语句){
			循环体语句;
		}

(3)while循环

	A:基本格式
		while(判断条件语句) {
			循环体语句;
		}	

(4)do…while循环

	A:基本格式
		do {
			循环体语句;
		}while(判断条件语句);		

3:控制跳转语句(掌握)

(1)break:中断的意思
	A:用在循环和switch语句中,离开此应用场景无意义。
	B:作用
		a:跳出单层循环
		b:跳出多层循环,需要标签语句的配合
(2)continue:继续
	A:用在循环中,离开此应用场景无意义。
(3)return:返回
	A:用于结束方法的,后面还会在继续讲解和使用。
	B:一旦遇到return,程序就不会在继续往后执行。		

异常收集

数组操作的两个常见小问题:

	ArrayIndexOutOfBoundsException:数组索引越界异常
		原因:你访问了不存在的索引。
	
	NullPointerException:空指针异常
		原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。

多态向下转型

	ClassCastException:类型转换异常
		原因:一般在多态的向下转型中容易出现
		
	作用:请自己把所有的场景Exception结尾的问题总结一下。
	  以后遇到就记录下来。
		  现象,原因,解决方案。

你聪明有人会说你心机重,你靠的是努力有人会说你运气好,
你说自己天生乐观有人会说你虚假,有时候,你明明就是一杯白水,
却被人硬生生逼成了满肚子憋屈的碳酸饮料。人一生要遇见太多人,
即使有些话字字诛心,也没必要活在他们的眼神里,只要内心澄明,
就永远不用讨好一个不懂你的人。爱生活,爱Java。 -->来自黑马

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值