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

------- 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培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值