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

黑马程序员_java基础(2) 流程控制语句&函数与数组

2013-03-12 02:49 1091 查看
-------android培训java培训、期待与您交流!
----------

一.流程控制语句

判断结构
if ...else if... else if.... else.... 嵌套用法
代码实现

class IfDemo2
{
public static void main(String[] args)
{
/*
if语句的第二种格式:

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

*/
int x = 1;
if(x>1)
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
System.out.println("Hello World!");

int a = 3,b;
/*
if(a>1)
b = 100;
else
b = 200;
*/
b = a>1?100:200;//三元运算符就是if else 语句简写格式。

//		简写格式什么时候用?
//			当ifelse运算后,有一个具体的结果时,可以简化写成三元运算符。
System.out.println("b="+b);
}
}


选择分支结构
switch.... case 嵌套用法
switch语句选择的类型只有四种:byte,short,int
, char JDK1.5中支持了枚举类型 ,JDK1.7中支持了String 类型

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

如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

if和switch的应用:

if:

1,对具体的值进行判断。

2,对区间判断。

3,对运算结果是boolean类型的表达式进行判断。

switch:

1,对具体的值进行判断。

2,值的个数通常是固定的。

对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存。

效率相对高一点。
代码实现:
class SwitchDemo
{
public static void main(String[] args)
{

/*
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}

*/

int x = 2;
switch(x)//byte,short,int,char.
{
default:
System.out.println("d");
//break;
case 4:
System.out.println("a");
//break;
case 1:
System.out.println("b");
break;
case 3:
System.out.println("c");
break;

}

int a = 4,b =2;
char opr = '%';

switch(opr)
{
case '+':
System.out.println(a+b);
break;
case '-':
System.out.println(a-b);
break;
case '*':
System.out.println(a*b);
break;
case '/':
System.out.println(a/b);
break;
default:
System.out.println("无法运算,符号不支持");
break;
}

}
}


循环结构
while , for, do...while, 嵌套用法
,for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环
条件,重复找个过程,直到条件不满足为止

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

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

代码实现:
for
语句
class ForDemo
{
public static void main(String[] args)
{
/*

for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;(循环体)
}

for(int x = 1; x<3; x++)
{

System.out.println("x="+x);

}
*/
int x = 1;
for(System.out.println("a");x<3; System.out.println("c"))
{
System.out.println("d");
x++;
}

//		for(int a=0,b=0; a<3; a++,b--)

//a d c d c
}
}
while语句:
class  WhileDemo
{
public static void main(String[] args)
{

/*
while(条件表达式)
{
执行语句;
}

*/
int x = 1;
while(x<3);
{
System.out.println("x="+x);

x++;
}

}
}


do
while 语句:
class DoWhileDemo
{
public static void main(String[] args)
{

/*
do
{
执行语句;
}while(条件表达式);

*/
int x = 1;
do
{
System.out.println("x="+x);
x++;
}
while (x<1);

/*
do while语句的特点:无论条件是否满足,循环体至少执行一次。

*/

int y = 1;
while(y<1)
{
System.out.println("y="+y);
y++;
}
}


其他流程控制语句
break 语句
continue 语句
标号语句 break/ continue: 标号名
eg:
class BreakContinueDemo
{
public static void main(String[] args)
{

/*
break:跳出。
break作用的范围:要么是switch语句,要么是循环语句。
记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到。
break跳出所在的当前循环。
如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成。

for(int x=0; x<3; x++)
{
if(x==1)
break;
System.out.println("x="+x);
}

b:for (int x=0; x<3 ;x++ )
{
c:for (int y=0; y<4 ; y++)
{
System.out.println("x="+x);
break b;
}

}*/

/*
continue:继续。
作用的范围:循环结构。
continue:结束本次循环,继续下次循环。
如果continue单独存在时,下面不要有任何语句,因为执行不到。

for (int x=0; x<11 ;x++ )
{
if(x%2==0)
continue;
System.out.println("x="+x);
}
*/
c:for (int x=0; x<3 ;x++ )
{
b:for (int y=0; y<4 ; y++)
{
System.out.println("x="+x);
continue c;
}

}

}
}
-------------------------------------------------------------------------------------------------------------------------

二.java函数

函数格式:

修饰符 返回值类型 函数名(参数类型 形式参数1...){

执行语句;

return 返回值;

}

特点:

定义函数可以将功能代码进行封装

便于对该功能进行复用

函数只有被调用才会被执行

函数的出现提高了代码的复用性

对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

函数重载

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

特点:

与返回值类型无关,只看参数列表

面试题:
Overload 和 Override 区别

方法的重写Override和重载Overload是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

Overloaded的方法是可以改变返回值的类型。

eg:

//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}
-------------------------------------------------------------------------------------------------------------------------

JVM方法调用的执行过程



三.java数组

概念:
同一种类型数据的集合。其实数组就是一个容器

格式 :
元素类型[] 数组名 = new 元素类型[元素个数]
元素类型[] 数组名 = new 元素类型[元素,元素....]

数组内存结构



常见的数组排序操作
选择排序
eg:
for(int x=0;x<a.length-1;x++){
for(int y=x+1;y<a.length;y++){
if(a[x]>a[y]){
int temp=a[x];
a[x]=a[y];
a[y]=temp;
}
}
}


冒泡排序
for(int x=0;x<a.length-1;x++){
for(int y=0;y<a.length-x-1;y++){
if(a[y]>a[y+1]){
int temp=a[y];
a[y]=a[y+1];
a[y+1]=temp;
}
}
}


折半查找
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;

while(min<=max)
{
mid = (max+min)>>1;

if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
进制转换:
public static void toHex(int num)
{

StringBuffer sb = new StringBuffer();

for(int x=0; x<8; x++)
{
int temp = num & 15;
if(temp>9)
//System.out.println((char)(temp-10+'A'));
sb.append((char)(temp-10+'A'));
else
//System.out.println(temp);
sb.append(temp);

num  = num >>> 4;
}
System.out.println(sb.reverse());

}
二维数组
格式定义
int[][] arr
= new int[4][4]
int[][]
arr = new int[4][]
int[][]
arr = {{5,2,2},{3,5},{5,3,15,6}}

注意:第三个一维数组长度 arr[2].length

-------android培训java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: