java基本数据类型与运算

#1:关键字
##(1)被Java语言赋予特定含义的单词
##(2)特点:
全部小写。
##(3)注意事项:
A:goto和const作为保留字存在。
B:类似于Notepad++这样的高级记事本会对关键字有特殊颜色标记

#2:标识符
##(1)就是给类,接口,方法,变量等起名字的字符序列
##(2)组成规则:
A:英文大小写字母
B:数字
C:$和_
##(3)注意事项:
A:不能以数字开头
B:不能是java中的关键字
C:区分大小写
##(4)常见的命名规则(见名知意)
A:包 全部小写
单级包:小写
举例:henson
多级包:全部小写,域名反转,并用.隔开
举例:com.cskaoyan
B:类或者接口
一个单词:首字母大写
举例:Student, Comparable
多个单词:每个单词首字母大写 (驼峰命名法)
举例:HelloWorld
C:方法或者变量
一个单词:首字母小写
举例:name, show()
多个单词:从第二个单词开始,每个单词首字母大写
举例:studentAge, showAllNames()
D:常量
全部大写
一个单词:大写
举例:PI
多个单词:大写,并用_隔开
举例:MAX_VALUE

#3:注释
##(1)就是对程序进行解释说明的文字
##(2)分类:
A:单行注释 //
B:多行注释 /* /
注意事项:多行注释不能内嵌使用
C:文档注释(后面讲) /
* */
##(3)注释的作用
A:解释说明程序,提高了代码的阅读性。
B:可以帮助我们调试程序。

#4:常量
##(1)在程序执行的过程中,其值不能发生改变的量
##(2)分类:
A:字面值常量
B:自定义常量(后面讲)
##(3)字面值常量
A:字符串常量 “Hello, world!”
B:整数常量 12, 23
C:小数常量 12.345
D:字符常量 ‘a’, ‘A’, ‘0’, ‘中’
E:布尔常量 true, false
F:空常量 null(后面讲)
##(4)在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开头。
##(5) 浮点数常量的两种表示形式
A:十进制形式 3.14
B: 科学计数法: 4.56e7

#5:进制转换
##(1)其他进制到十进制
系数:就是每一个位上的数字
基数:x进制的基数就是x
权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。

	结果:系数*基数^权次幂之和。
##(2)十进制到其他进制
	除基取余,直到商为0,余数反转。
##(3)进制转换的快速转换法
	A:十进制和二进制间的转换
		8421码。
	B:二进制到八进制,十六进制的转换

#6: 原码,反码,补码
##(1)原码 (便于人去理解)
7 0000 0111
-7 1000 0111
##(2)反码
7 0000 0111
-7 1111 1000
##(3)补码 (方便计算机计算)
7 0000 0111
-7 1111 1001

#7:变量
##(1)在程序的执行过程中,其值在某个范围内可以发生改变的量
##(2) 声明一个变量,本质是申请一片内存空间
名字, 范围, 初始化值
##(2)变量的定义格式:
A:数据类型 变量名 = 初始化值;
B:数据类型 变量名;
变量名 = 初始化值;

#8:数据类型
##(1)Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
##(2)分类:
A:基本数据类型
B:引用数据类型:类,接口,数组。
##(3)基本数据类型
A:整数 占用字节数 范围
byte 1 -128 ~ 127
short 2 能表示65536个数
int 4 大概能表示43亿个数(不能用int表示全体人类)
long 8
B:浮点数
float 4
double 8
C:字符
char 2(注意Java中,字符采用Unicode编码,和c不一样)
D:布尔
boolean 1

	注意:
		整数默认是int类型,浮点数默认是double。
		长整数要加L或者l,建议后面加L。
		单精度的浮点数要加F或者f。

#8:数据类型转换
##(1)boolean类型不参和其他类型进行转换。
##(2)默认转换
A:表示范围从小到大
B:byte --> short --> int --> long --> float --> double
C: char --> int
D:byte,short,char参与运算时,会直接转换成int类型。即使是同一个数据类型的运算,也会先转换成int类型。
##(3)强制转换
A:范围从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
##(4)思考题和面试题:
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; // -126
D:字符参与运算
是查找ASCII里面的值
‘a’ 97
‘A’ 65
‘0’ 48

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

#9:运算符
##(1)算术运算符
A:+,-,*,/,%,++,–
B:+的用法
a:加法
b:正号
c:字符串连接符 (对+进行了重载)
C:/和%的区别
a: / 整数之间的相除,结果是整数。
向0取整
如果想得到小数,*1.0即可。
b: %
判断一个数是否是奇数
a % b = a - (a / b) *b
取余运算是一个很耗时的操作,在性能比较关键的时候最好不要使用
D:++和–的用法
a:他们的作用是自增或者自减
b:使用
**单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
**参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
放在操作数的后面:先参与操作,再自增或者自减
c:底层原理:
a = a++;

			int temp = a;
			a++;
			a = temp;
##(2)赋值运算符
	A:=,+=,-=,*=,/=,%=等
	B:=叫做赋值运算符,也是最基本的赋值运算符
		int x = 10; 把10赋值给int类型的变量x。
		a = b = 10;
		赋值运算符是从右向左结合的。
		赋值表达式有值的,值等于=右边表达式的值。
	C:扩展的赋值运算符的特点
		隐含了强制转换。
		面试题:
			short s = 1;
			//s = s + 1;
			
			short s = 1;
			s += 1;
			请问上面的代码哪个有问题?
##(3)比较运算符
	A:==,!=, >,>=,<,<=,instanceof
	B:最终结果是boolean类型。
	C:千万不要把==写成了=
##(4)逻辑运算符
	A:&,|,^,!,&&,||
	B:逻辑运算符用于连接boolean类型的式子
	C:结论
		&: 有false则false
		|:  有true则true
		^: 相同则false,不同则true。
			情侣关系。
		!: 非true则false,非false则true
		
		&&: 结论和&是一样的,只不过有短路效果。左边是false,右边不执行。
		||: 结论和|是一样的,只不过有短路效果。左边是true,右边不执行。
		推荐使用 &&,||。
		
##(5)位运算符
	A:&, |, ^, ~, <<, >>, >>>
	B:结论:
	     &:同时为1,才为1,否则为0
	     |:同时为0,才为0,否则为1
	    ^:  相同为0,不同为1;
		a ^ b = b ^a;
		a ^ 0 = a;
		a ^ a = 0;
	    ~: ~0为1,~1为0;
	   <<: 移除的高位丢弃,低位补0; 
		左移n个单位,相当于乘以 2 ^ n;
	  >>: 移除的低位丢弃,如果符号位是0,则高位补0,如果符号位是1,则高位补1;
		右移n个单位,相当于除以2 ^ n;
	 >>>: 移除的低位丢弃,高位补0;

	注意事项:如何移动的单位a超过了字长m, 则实际移动
		a mod m (数学中的取余运算)
	B:面试题
		a: 判断一个数是否是奇数	a & 1 == 1;
		b: 对2 ^ n 取余。		a & (2^n - 1);
		c: 如何判断一个数是否是2^n	a & (a-1) == 0;
		d: 两个整数之间的交换;
		e: 有一堆数,都是成对出现的,只有一个单独的,找出这个单独的数。
		f: 用最有效率的方式求2 * 8的值		2 << 3;
##(6)三目运算符
	A:格式
		比较表达式 ? 表达式1 : 表达式2;
	B:执行流程:
		首先计算比较表达式的值,看是true还是false。
		如果是true,表达式1就是结果。
		如果是false,表达式2就是结果。
	C:案例:
		a:比较两个数据是否相等
		b:获取两个数据中的最大值
		c:获取三个数据中的最大值
			int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
			int max = a > b ? (a > c ? a : c) : (b > c ? b : c);

#10:键盘录入
##(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
##(2)如何实现呢?目前就记住
A:导包
import java.util.Scanner;
位置:在class的上边
B:创建对象
Scanner sc = new Scanner(System.in);
C:获取数据
int x = sc.nextInt();
只能获取整数值,如果输入不是整数,会抛出InputMismatchException异常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章