Java基础知识(上)


——我是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 结束本次循环,进入下一次循环。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值