您的位置:首页 > 编程语言 > Java开发

Java基础知识(上)

2015-08-05 11:08 423 查看




——我是LGM_Hakka,请多多指教。

数据类型

基本数据类型

8种基本数据类型(byte、short、char、int、long、float、double、boolean)





--------------------------------------------------------------


基本知识



Ø 数据容量大小:byte、short、char < int < long < float < double

Ø byte、short、char三者之间不能相互转换。

Ø 基本数据类型在做运算时,若只有整数数据时,将转换成int类型计算;若有实数时,将转为double类型计算。

Ø 实型的默认类型是double;整型的默认类型是int。

--------------------------------------------------------------

强制类型转换(显式类型转换)

强制类型转换:数据从大到小,向下转换

格式:目标数据类型 变量名 = (目标数据类型)(需要转换的数据)

例如:

int a =(int)(3.14);
char b =(char)(97);


弊端:有可能会损失精度

--------------------------------------------------------------

自动类型转换(隐式类型转换)

自动类型转换:数据从小到大,向上转型

格式 :目标数据类型 变量名 = 需要转换的数据;

例如:

int a = 'a';
double b =12;


--------------------------------------------------------------

运算

在运算中,数据会先自动提高类型,进行计算,所以需要注意哪些最后必须强转的。

例如:byte b =(byte)(b1 + b2);

无论b1,b2是什么类型的数值,都将转换为int类型后再相加,所以相加后所得到的是int类型的数值,要将int类型的数值赋值给byte类型,必须强转。但是,如果:【byte b = 3+4;】这样是可以的,因为3,4都是常量。

基本数据类型在做运算时,若只有整数数据时,将转换成int类型计算;若有实数时,将转为double类型计算。

--------------------------------------------------------------

默认值

基本数据类型定义为局部变量时,没有默认初始化值,所以一定要初始化变量后才能调用。
btye,short,int,long类型的数组或成员变量,默认初始值是0;
float,double类型的数组或成员变量,默认初始值是0.0;
char类型的数组或成员变量,默认初始值是'\u0000';
boolean类型的数组或成员变量,默认初始值是false。
(注:String类型的数组或成员变量,默认初始值是null)


运算符、进制转换

运算符

概述:把常量和变量连接的符号,一般参与运算使用。

分类:

算术运算符、赋值运算符、关系运算符

逻辑运算符、位运算符、三元运算符

算术运算符

+、-、*、/、%、++、--

特殊:

1、+:正号,加法,字符串连接符。

System.out.println("5+5=" + 5 + 5);// 5+5=55
System.out.println("5+5=" + (5 + 5));// 5+5=10
System.out.println(5 + 5 + "=5+5");// 10=5+5

2、%:取得余数 (正负号跟左边一致)

左边如果大于右边,结果是余数。

左边如果小于右边,结果是左边。

左边如果等于右边,结果是0。

3、++/- -: +1/-1

++ 其实相当于把数据+1 、-1

单独使用:在数据的前后,结果一致。

参与操作使用:

如果在数据的后边,数据先操作,在++/--

如果在数据的前边,数据先++/--,在操作。

4、赋值运算符:=,+=,-=,*=,/=,%=

5、关系运算符:==、!=、>、>=、<、<=

特点:关系运算符的结果都是boolean类型。

【 请千万注意:== 不要写成 =】

6、逻辑运算符:&、|、!、^、&&、||

&:有false则false

|:有true则true

!:true变false,false变true

^:相同false,不同true

&&:有false则false

||:有true则true

开发中常用:&&、||、!



&和 &&有什么区别

&(与):不管 & 连接符左边的条件表达式是true还是false,右边的表达式都会进行运算 。

&&(短路与):假如 && 连接符左边的条件表达式为false时,右边的表达式就不会再进行运算,可以提高效率。



|和 || 有什么区别

|(或):不管 | 连接符左边的条件表达式是true还是false,右边的表达式都会进行运算 。

||(短路或):假如 && 连接符左边的条件表达式为true时,右边的表达式就不会再进行运算,可以提高效率。



注意细节

a=a+20与a+=20的区别

a += 20;-----把左边和右边的和赋值给左边。

相当于【a = (a的数据类型)(a+20);】

比如:

a = a + 20;

a += 20;

虽然结果是等价的。但实质运算是不等价的。

因为+=这种运算符,内含了强制类型转换功能。

比如:

short s = 2;
s+=3;
//等价于
s = (short)(s+3);


++a与a++的区别

单独使用:在数据的前后,结果一致。

参与操作使用:

如果在数据的后边,数据先操作,在++/--

如果在数据的前边,数据先++/--,在操作。

int a = 0;
  int b = a++;
  System.out.println("a = " +a);//a = 1
  System.out.println("b = " +b);//b = 0
//解释:
//1、先将a的值存到一个临时变量;
//2、然后a+1,赋值给实际的a;
//3、最后将临时变量中的a赋值给b。

  int c = 0;
  int d = ++c;
  System.out.println("c = " +c);//c = 1
  System.out.println("d = " +d);//d = 1
//解释:
//1、将c+1,赋值给c;
//2、 将被重新赋值的c,再赋值给d


位运算符

^ : 一个数据对同一个数据^两次,结果还是数据本身。

例如:a ^ b ^ b= a



【面试常见】两个数交换位置:可以用位运算符。

例如:

int a =10;int b = 20; 需要a和b的值对调。

做法:

int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;

这样即可将这两个数的值对调。

三目运算符

格式:条件表达式?表达式1:表达式2;

执行流程:

根据条件表达式返回的是true还是false,决定结果是什么。

如果是true,就把表达式1作为结果。

如果是false,就把表达式2作为结果。

进制之间的转换

(1)是一种进位的方式。X进制,表示逢x进1。
(2)Java中整数常量的表示
1:二进制 由0,1组成。以0b开头。JDK7以后的新特性。
2:八进制 由0-7组成。以0开头。
3:十进制 由0-9组成。默认就是十进制。
4:十六进制 由0-9,A-F(不区分大小写)组成,以0x开头。
(3)进制转换:
其他进制到十进制
系数:就是每一位上的数据。
基数:X进制,基数就是X。
权:在右边,从0开始编号,对应位上的编号即为该位的权。
结果:把系数*基数的权次幂相加即可。
十进制转为其他进制的方法:
除基取余,直到商为0,余数反转。

运算符的优先级(从高到低)

优先级数值越小,优先级越高
如果在程序中,要改变运算顺序,可以使用()。
优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

控制语句

if语句

1、用于做判断使用的。
常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
--------------------------------------------------------------
2、格式(有三种):
A、第一种格式

if (条件表达式) {
	// 语句体;
}
解释执行流程:

如果条件表达式为true,就执行语句体; 否则,什么都不执行。

B、第二种格式

if (条件表达式1) {
	// 语句体1;
} else {
	// 语句体2;
}
解释执行流程:

如果条件表达式为true,就执行语句体1;否则,就执行语句体2;

C、第三种格式

if (条件表达式1) {
	// 语句体1;
} else if (条件表达式2) {
	// 语句体2;
}
...
else {
	// 语句体n;
}
解释执行流程:

如果条件表达式1为true,就执行语句体1;
如果条件表达式2为true,就执行语句体2;
...
否则,就执行语句体n;
--------------------------------------------------------------
3、注意事项
a、什么时候时候哪一种if语句。
第一种格式在判断条件为一种情况下使用。
第二种格式在判断条件为两种情况下使用。
第三种格式在判断条件为多种情况下使用。
b、每一种if语句其实都是一个整体,如果有地方执行了,其他的就不执行了。
c、如果if或者else里面控制的语句体是一条语句,是可以省略大括号的。
但是,如果是控制多条语句,就必须写上大括号。
建议:写上大括号。
d、大括号和分号一般不同时出现。
--------------------------------------------------------------
4、作用域
所有变量的定义只在它所属的大括号内有效。



Switch语句

1、格式:

switch(表达式) {
	case 值1:
	   //语句体1;
		break;
	case 值2:
		//语句体2;
	    break;
	case 值3:
	    //语句体3;
	    break;
	...
	default:
	    //语句体n;
	break;
 }


A、针对格式的解释
switch:表示这里使用的是switch语句,后面跟的是选项。
表达式:byte,short,int,char,String,枚举
JDK1.5以后可以是枚举
JDK1.7以后可以是字符串
case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
case后面的值是不能够重复的。
break:结束语句
switch语句执行到这里,就结束了。
default:相当于if语句的else。
当所有的case和表达式都不匹配的时候,就走default的内容。一般不建议省略。

B、执行流程
进入switch语句后,就会根据表达式的值去找对应的case值。
如果最终没有找到,那么,就执行default的内容。

C、注意事项:
a、default整体可以省略吗? 可以,但是不建议。
b、default的位置可以放到前面吗? 可以,但是不建议。
c、break可以省略吗? 可以,但是不建议。
d、default在最后,break是可以省略的。
e、case后面的break可以省略,但是结果可能有问题。
f、switch语句什么时候结束呢? 遇到break或者执行到程序的末尾。

循环

循环基础知识

1、 如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。 让我们代码看起来简洁了。
--------------------------------------------------------------
2、循环的组成
A:循环体,就是要做的事情。
B:初始化条件。一般定义的是一个初始变量
C:判断条件。用于控制循环的结束。
D:控制条件。用于控制变量的变化。一般都是一个++/--操作。
--------------------------------------------------------------
3、循环的分类:for循环、while循环以及do...while循环
A:for循环

for(初始化条件;判断条件;控制条件) {
        循环体;
}
执行流程:

a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。
----------------------------------------------------------
B:while语句

// 初始化条件;
while (判断条件) {
	// 循环体;
	// 控制条件;
}
执行流程:

a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。
----------------------------------------------------------
C:do...while(开发很少用)

// 初始化条件;
do {
	// 循环体;
	// 控制条件;
} while (判断条件);
执行流程:

a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b。
false:就结束循环。
--------------------------------------------------------------注意:
一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
do...while循环至少执行一次循环体。开发中一般不用
for循环一般用于知道循环次数,有范围值。
while循环一般用于循环次数不明确。



循环嵌套

1、在for循环嵌套中,
例如:

for (int x = 0; x < 10; x++) {
	for (int y = 0; y < x; y++) {
		// ...
	}
}
结论:外循环控制行数,内循环控制列数

实例:

class Demo {
	public static void main(String[] args) {
		System.out.println("正三角形:");
		// 正三角形
		for (intx = 0; x < 5; x++) {
			for (inty = 0; y <= x; y++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println("------------------------");
		// 倒三角形
		System.out.println("倒三角形:");
		for (intx = 0; x < 5; x++) {
			for (inty = x; y < 5; y++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}


break和continue 的区别

1、我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字: break和continue
--------------------------------------------------------------
2、特点:
A:它们都必须在循环中(break还可以在switch中)。 一般在循环的判断中。
B:如果单独使用break和continue,后面是不能有语句的。
--------------------------------------------------------------
3、区别:
A:break 结束当前循环。
B:continue 结束本次循环,进入下一次循环。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: