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 结束本次循环,进入下一次循环。
相关文章推荐
- java使用JDBC连接数据库的几种方式
- spring入门基础(二)
- java方法
- Java自定义注解的个人理解
- 解决Java应用程序连接Acces问题心得一
- 生成中文版JavaDoc
- Java--对象构造和初始化
- Struts 2 + Hibernate + Spring 整合要点
- Java错误提示-------java.net.SocketException:Unrecognized Windows Sockets error: 0: JVM_Bind
- java 错误:找不到或无法加载主类的解决办法
- Java堆和栈
- Java堆和栈
- 解决myeclipse中不能自动装箱拆箱问题
- spring + springmvc + jdbc + quartz + maven整合
- eclipse中生成javadoc文档
- 在springMVC中使用自定义的异常处理
- java数组
- JAVA中使用FTPClient上传下载
- 如何用JUnit4测试spring service
- java中的float double精度丢失