您的位置:首页 > 职场人生

java面试 --之 java概述与基础知识 (2)

2016-09-19 00:00 211 查看

基本数据类型

在数据类型中,最常用也是最基础的数据类型,被称作基本数据类型。可以使用这些类型的值来代表一些简单的状态。

Java 语言的基本数据类型总共有以下8 种,下面是按照用途划分出的4 个类别:

定点类型:
整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从4 种类型中挑选合适的,如果没有特殊要求的话,一般选择int 类型。4 种整数型区别主要在每个数据在内存中占用的空间大小和代表的数值的范围。

浮点类型:
小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从以下2 种类型中挑选合适的。如果没有特殊要求,一般选择double类型。
由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型。

字符型:
字符型代表特定的某个字符,按照前面介绍的知识,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算机完成从编号转换成对应字符的工作。Java 语言中为了更加方便国际化,使用Unicode 字符集作为默认的字符集,该字符集包含各种语言中常见的字符。在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例
如’A’、’a’等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。

布尔型:
布尔型代表逻辑中的成立和不成立。Java 语言中使用关键字true 代表成立,false 代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java 把逻辑的值用布尔型来进行表达。

14、基本数据类型转换之向上转型和向下转换

向上转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg:

int i = 123;

long l = i; //自动转换,不需强转

float f = 3.14F;

double d = f;

向下转换:

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型可自动转换为容量大的数据类型;

byte,short,char → int → long → float → double

byte,short,char之间不会相互转换,他们在计算时首先会转换为int类型。

boolean 类型是不可以转换为其他基本数据类型。

Eg:

long l = 123L;

int i = (int) l;//必须强转

double d = 3.14;

float f = (float) d;

我的总结:类型转化

小转大,自动!自动类型转换(也叫隐式类型转换)

大转小,强转!强制类型转换(也叫显式类型转换)

15、Java的运算符

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:

算术运算符(+ 、— 、* 、/ 、%)

赋值运算符(= 、+=、-=、*=、/=,、%=)

关系运算符(>、>=、<、<=、!=)

条件运算符(&&、||、!&、|、^)

位运算符(&、|、^、~、>>、<<、<<<、>>>)

我的总结:

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

“ ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false。

16、表达式和三目运算符

是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;

a + b

3.14 + a

(x + y) * z + 100

boolean b= i < 10 && (i%10 != 0)

表达式的类型和值:

对表达式中操作数进行运算得到的结果是表达式的值。

表达式值的数据类型即为表达式的类型。

表达式的运算顺序

应按照运算符的优先级从高到低的顺序进行;

优先级相同的运算符按照事先约定的结合方向进行;

“三目运算符”,语法格式:

x ? y : z;

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

package reviewDemo;

public class Demo2 {

public static void main(String[] args) {

String s = "lz";

s = (s == "lz" ? "正确" : "错误");

System.out.println(s);

}

}

输出:正确

17、程序流程控制

顺序结构

分支结构(条件结构)

循环结构

控制循环结构

顺序结构:

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

if语句:

基本语法:if(表达式){方法体}else if(表达式){方法体}else(方法体)

几种形式:

三种格式:

if(条件表达式){执行语句;}

if(条件表达式){执行语句;}else{执行语句;}

if(条件表达式){执行语句;}else if (条件表达式){执行语句;}……else{执行语句;}

public class If3

{

public static void main(String args[])

{

int i = 3;

if (i > 5)

{

System.out.println("变量i大于5");

}

else if (i > 4)

{

System.out.println("变量i小于4");

}

else

{

System.out.println("其他");

}

}

}

switch控制语句

格式:

switch(表达式)

{

case 表达式可能的结果值1:

执行语句;

break;

case 表达式可能的结果值2:

执行语句;

break;

...

default:

执行语句;

break;//最后这个一般不写

}

备注:

case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default。

结束switch语句的两种情况:遇到break,switch语句执行结束。

如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。

class switch2

{

public static void main(String[] args)

{

int a = 7,b = 5;

switch(a-b)

{

case 3://表达式可能的值;

{

System.out.println("33!");

}

break;

case 4:

{

System.out.println("44!");

}

break;

default://都没有执行则 执行该语句!

System.out.println("其它的");

}

}

}

注意:switch语句只能使用byte、char、short、int四种基本类型以及它们的包装类和枚举

18、三大循环结构:

用于处理需要重复执行的操作;

根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;

while:事先不需要知道循环执行多少次;

do while:同上,只是至少要执行一次(先做,后判断)

for:需要知道循环次数;

循环结构(while & do while)

while语句

格式:

while(条件表达式值为true)

{

执行语句;

}

do while语句

格式:

do

{

执行语句;

}

while(条件表达式值为true);

我的总结:do while特点是无论条件是否满足,循环体至少被执行一次。

循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false值;

循环结构(for)

格式:

for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))

{

执行语句;(4)

}

执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)

备注:

1, for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

2, while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

3, 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

Eg:

用三种循环控制求出100以内前5个3的倍数的数字;

class while

{

public static void main(String[] args)

{

int i = 1,k = 0;

while(i<=100)

{

if(i%3==0)

{

if(k<5)

System.out.println(i);

k++;

}

i++;

}

}

}

class dowhile

{

public static void main(String[] args)

{

int i = 1,k = 0;

do{

if(i%3==0)

{

if(k<5)

System.out.println(i);

k++;

}

i++;

}

while(i<=100);

}

}

class for

{

public static void main(String[] args)

{

int i = 1,k = 0;

for(;i<100;i++)

{

if(i%3==0&&k<5)

{

System.out.println(i);

k++;

}

}

}

}

19、嵌套循环与流程控制

嵌套循环:循环里套循环

假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。

Eg:利用for循环语句的嵌套打印出乘法口诀表

class break1

{

public static void main(String[] args)

{

for(int i=1;i<=10;i++)//定义i与j的值必须在for循环里面,否则每次跳出循环重新执行就无法取值

{

for(int j=1;j<=10;j++)

{

if(j<=i)

System.out.print(j+"*"+i+"="+i*j+" ");//小注意:print()括号里面

必须传递参数,println()无限制!

}

System.out.println();

}

}

}

流程控制

break语句、 continue语句;

break:终止该层循环;

continue:跳过该层循环

注:

①:若这两个语句离开应用范围,存在是没有意义的。

②:这个两个语句后面都不能有语句,因为执行不到。

③:continue语句是跳过本次循环,继续下次循环。

④:标签的出现,可以让这两个语句作用于指定的循环。

Eg:

package reviewDemo;

public class Demo2 {

public static void main(String[] args) {

int i = 1;

for (; i < 10; i++) {

System.out.println(i);

if(i == 8){

break;//流程控制,不会完全执行!

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: