一、程序运行流行控制判断语句
1、 判断结构——if
if语句的三种格式:
a) if(条件表达式)
{
执行语句;
}
b) if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
c) if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句
}
……
else
{
执行语句;
}
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。
c,条件表达式无论写成什么样子,最终的结果不是true就是 false。
import java.util.Scanner;
public class IfTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入您的姓名:");
String name = sc.nextLine();
if(name.length()==0)
{
System.out.println("请重新输入姓名");
}
else if(name.length()>=10)
{
System.out.println("姓名长度不能大于10");
}
else
{
System.out.println(name+"欢迎您");
}
}
}
}
2、 选择结构——switch
switch语句格式:
switch(表达式)
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
public class SwitchTest
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份我帮你分析是几月去哪里好玩");
int month = sc.nextInt();
switch (month)
{
case 3:
case 4:
case 5:
System.out.println("春天去莫斯科田园乡村");
break;
case 6:
case 7:
case 8:
System.out.println("夏天去沙滩哈哈,");
break;
case 9:
case 10:
case 11:
System.out.println("秋天去日本富士山");
break;
case 12:
case 1:
case 2:
System.out.println("冬天去马尔代夫玩下");
break;
default:
System.out.println("您输入的月份有误");
break;
}
}
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int, char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
注:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。
if和switch语句很像。具体什么场景下,应用哪个语句呢?如果判断的具体数值不多,而且符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
3、 循环结构——while,do while,for
while语句格式:
while(条件表达式)
{
执行语句;
}
do while语句格式:
do
{
执行语句;
}while(条件表达式);
while和do while的区别:
while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。
简单一句话:do while:无论条件是否满足,循环体至少执行一次。
for语句格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
/*
需求:统计水仙花数有多少个
*/
class WhileDemo{
public static void main(String[] args) {
//for循环版本
// 定义统计变量,初始化值是0
int count = 0;
// 3位数告诉了我们范围,用for就可以搞定,三位数初始值100,小于1000 或 <=999
for (int i = 100; i < 1000; i++)
{
// 获取每一个三位数的个,十,百的数据
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
//按照要求进行判断
if (i==(ge*ge*ge + shi*shi*shi + bai*bai*bai))
{
System.out.println(i);
count++;
}
}
System.out.println("水仙花数一共有"+count+"个");
System.out.println("------------");
//while循环版本
int count2 = 0;
int y = 100;
while(y<1000) {
int ge = y%10;
int shi = y/10%10;
int bai = y/10/10%10;
if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == y) {
count2++;
}
y++;
}
System.out.println("count2:"+count2);
}
}
二、函数
定义:定义在类中的具有特定功能的一段独立小程序。也称方法。
格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
执行语句;
return返回值;
}
其中:
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
如何定义一个方法?
明确要定义的功能最后的结果是什么。
明确在定义该功能的过程中,是否需要未知内容参与运算。
函数的一个重要特性——重载(override)
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。
public class MethodTest
{
public static int getMax(int[] arr)
{
int max = arr[0];
for(int i=0;iif(arr[i]>max)
{
max = arr[i];
}
}
return max;
}
public static String getMax(String[] str)
{
String max = str[0];
for(int i=0;iif(str[i].length()>max.length())
{
max = str[i];
}
}
return max;
}
public static void test1(String ...values)
{
}
public static void test2(String a ,String ... strings)
{
System.out.println("a="+a);
for(int i =0;iout.println(strings[i]);
}
}
public static void test3(int a,String ...nums )
{
}
public static int sum(int ... nums)
{
int s= 0;
for (int i=0;ireturn s ;
}
public static void main(String[] args)
{
int[] arr = {3,6,2,10,15,1};
int max= getMax(arr);
System.out.println("max="+max);
String[] str = {"454151515","123123","2222","8888888888"};
System.out.println(getMax(str));
test1("aa","bbbb");
test2("qq","dsafqf","fwqfa");
int sum = sum(1,5,10,22);
System.out.println(sum);
}
}
三、数组
数 组:
用于存储同一类型数据的一个容器。好处:可以对该容器中的数据进行编号,从0开始。数组用于封装数据,就是一个具体的实体。
如何在java中表现一个数组呢?两种表现形式。
1)、元素类型[] 变量名 = new 元素类型[元素的个数];
2)、元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};
public class Test1
{
public static void main(String[] args)
{
int[] arr = {3,5,2,12,10};
int sum = getSum(arr);
System.out.println(sum);
}
public static int getSum(int[] arr)
{
int sum=0;
for(int i=0;i
import java.util.Scanner;
public class Test3
{
public static boolean isEquals(int[] num1, int[] num2)
{
if (num1.length != num2.length)
{
System.out.println("该数组长度都不相等根本不用比较内容了");
return false;
}
for (int i = 0; i < num1.length; i++)
{
if (num1[i] != num2[i])
{
System.out.println("内容不相等");
return false;
}
}
System.out.println("内容相等");
return true;
}
public static void main(String[] args)
{
int[] arr1 =
{ 1, 2, 3 };
int[] arr2 =
{ 1, 2, 3 };
boolean b = isEquals(arr1, arr2);
System.out.println(b);
}
}