---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
语法结构:程序的流程控制,分为判断结构、选择结构、循环结构
If语句:判断结构
格式1:if(条件表达式){执行语句;}
格式2:if(条件表达式)else{执行语句;}
格式3:if(条件表达式)else if{执行语句;}
特点:每一种格式都是单挑语句。if else 的简写格式就是三元运算符,三元运算符的好处是可以简化if else代码;弊端是结果必须要有一个结果。
Switch语句:选择结构
格式:switch(表达式){case取值1:执行语句;break;case取值2:执行语句 break;default:执行语句;break; }
特点:switch语句选择的类型只有四种:byte,short,int,char。case之间与default没有顺序。先执行第一行的case没有匹配的执行default。结束switch语句的两种情况是,遇到break或者执行到switch语句结束。
if 和switch很像具体什么场景下用什么语句?
如果判断的具体数值不多,而且符合byte short int char
虽然两个语句都能使用建议使用switch因为销量稍高
其他的情况例如对于区间的判断对于结果是是boolean型的使用if因为if的使用范围更广
class yuju
{
public static void main(String[] args)
{
int x =2;
switch(x) //switch语句的类型只有 byte short int char
{
case 4:
System.out.println("a");
break;
case 6:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;
default:
System.out.println("d");
}
}
}
while,do while,for语句:循环结构。
格式:whlie(条件表达式){执行语句;}
do {}while(条件表达式;)特点是无论条件是否满足循环体至少执行一次。
for (初始化表达式;循环条件;循环后操作){执行语句;}
class jiegou
{
public static void main(String[] args)
{
/*定义一个初始化表达式
while(条件表达式)
{
循环体
}*/
int x=1;
while(x<=10)
{
System.out.println("x="+x);
x+=2;
}
/*
while:先判断条件在执行循环体
do whlie先执行循环体再判断条件条件满足再执行循环体
简单说do whlie:无论条件是否满足循环体至少执行一次
*/
do
{
System.out.println("do:x="+x);
x++;
}
while (x<3);{
}
}
}
for与 while的区别:
变量有自己的作用域。对于for来讲如果将用于控制循环的的增量定义
在for中,for语句执行完毕,该变量在内存被释放
for和while可以进行互换,如果需要定义循环增量,用for更为合适
class fordemo
{
public static void main(String[] args)
{
/*
for(初始化表达式:循环条件表达式:循环后的操作表达式)
{
执行语句;
}
*/
for(int x =0;x<3;x++)
{
System.out.println("x="+x);
}
int y = 0;
while (y<3)
{
System.out.println("y=="+y);
y++;
}
}
}
class ForTest
{
/*
无限循环的最简单表现形式
for(;;){}
while(true){}
*/
public static void main(String[] args)
{ int x= 1;
for (System.out.println("a");x<3;System.out.println("c") )
{System.out.println("d");
x++;
}
//要求计算1-10的和
int he =0,y=1;
while (y<=10)
{he=he+y;
y++;
}
System.out.println("he="+he);
}
}
break与 continue语句
break语句:应用范围是选择结构和循环结构。
continue语句:应用循环结构。作用是结束本次循环继续下次循环。
特点:这两个语句离开引用范围在没有任何意义,这两个语句单独存在的下面不可以有语句因为执行不到。
函数:定义在类中具有特定功能的一段独立的小程序,也叫方法。
格式:修饰符范围值类型函数名(参数类型形式参数1,参数类型形式参数2)
{
执行语句;return返回值;
}
如何定义一个函数功能呢,那么该功能的原先结果是什么先要明确
在明确在定义该功能的过程中是否需要未知的内容与运算
定义一个功能完成3+4的运算并将结果返回给调用者
明确功能的结果是一个整数和
在实现该功能过程中是否有未知能容参与运算
public static int can()
{
return 3+4;
}*/
以上这个功能结果是固定的毫无扩展性而言
为了方便用户需求有用户来指定加数与被加数这样功能才有意义
public static int can(int x,int y)
{
return x+y;
}
特点:定义函数可以将功能代码封装;便于对该功能复用;函数只有被调用才会执行;函数提高了代码的复用性;对于函数没有具体返回值的情况,使用返回值类型关键字void表示,return语句在最后一行可以省略不写。
重载:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。特点:与返回值无关,只看参数列表。
什么时候用重载?
当定义的功能相同,但参与的运算的位置内容不同,那么这时就定义一个函数名表示此功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
数组:同一种类型的数据集合,其实数组就是一个容器。
格式:元素类型[]数组名 = new元素类型{元素个数或者数组长度}
每当new一个数组实体时,在堆内存中的数组都跟会根据数组的类型不同有初始值。当栈内存引用不指向堆内存的数组实体时,此时的数组实体就成为了垃圾数据。
数组静态初始化,在数组一创建时,就赋予数组固定的元素。
数组的排序、遍历、取值等操作
class ShuZuTest 数组元素的最值
{
public static void main(String[] args)
{
int[] arr={8,9,4,3,1,5};
int y = arr[0];
for (int x =1;x<arr.length ;x++ )
{
if (arr[x]>y)
y=arr[x];
}
System.out.println(y);
}
}
class ArrayTest2 数组的排序
{
public static void Array1(int arr[])
{
//给定的数组排序 {5,1,6,4,2,8}
for (int x=0;x<arr.length ;x++)
{
for (int y=x+1;y<arr.length ;y++ )
{
if (arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
数组中的两个基本排序代码
假定一个数组{1,8,5,6,15,18,12}
class ArraySort
{
//1.选择排序
public static void selectSort(int[] arr)
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if (arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
//冒泡排序
public static void bubbleSort(int[] arr)
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=1;y<arr.length-x-1 ;y++ )
{
if (arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y] =arr[y+1];
arr[y+1]=temp;
}
}
}
}
/**
十进制转2、8、16进制的方法函数
*/
class ArrayTrans
{
public static void main(String[] args)
{
trans(12,7,3);//各个进制的基数与位移数分别是12,1;7,3; 15,4;
}
//进制转换优化的功能函数
public static void trans(int num,int base,int offset)
{
if(num==0)
System.out.print(0);
char[] chs={'0','1','2','3','4','5','6','7','8',
'9','a','c','d','e','f'};
char[] arr=new char[32];
int pos =arr.length;
while (num!=0)
{
int temp = num & base;
arr[--pos] = chs[temp];
num =num >>> offset;
}
for (int x=pos;x<arr.length ;x++ )
{
System.out.print(arr[x]);
}
}
}
数组的查找功能
class GetIndex
{
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
int index = halfSearch_2(arr,5);
System.out.println("1="+index);
}
//折半查找:折半查找可以调高效率但是这个数组是必须是有序的数组
public static int halfSearch_2(int[]arr,int key)
{
int mid,max,min;
min=0;
max=arr.length;
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;
}
//顺序查找:定义一个功能用于获取key第一次出现在数组中的位置如果返回值为-1该值不存在。
public static int getIndex(int[]arr,int key)
{
for (int x=0;x<arr.length ; x++)
{
if (arr[x]==key)
{
return x;
}
}
return -1;
}
}
二维数组:
int[][] arr = new int [3][2];表示定义了一个arr的二维数组二维数组中有三个一位数组。每个一维数组内有两个元素。如果new intp[3][]表示每个一维数组的初始化值都是null。
---------------------- <a href=" http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href=" http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------