1.结构
if 选择结构:
语法:if(条件){
代码块1
}
if——else选择结构
语法:if(条件){
代码块1
}else{
代码块2
}
多重if选择结构
语法:if(条件1){
代码块1
}else if(条件2){
代码块2
}else{
代码块3
}
嵌套if选择结构
语法:
if(条件1){
if(条件2){
代码块1
}else{
代码块2
}
}else{
代码块3
}
2.关于if条件的三种判断
1.&& 与: 两个条件同时成立时为真。
2.|| 或 : 两个条件其中一个(至少一个)条件成立时为真。
3.!非 :两个条件至少有一个条件不成立时为假。
3.java类型:
第一类:整型
int(整数类型)4
byte(字节类型)1
short(短整形)2
long(长整形)8
第二类:浮点型
double(双精度类型 双精度)8
float(浮点类型 单精度)4
第三类:逻辑型
boolean(布尔型 他只有两个值1.True 2.False)1
第四类:字符型
char(字符型)2
4.常用的主类型:
主类型 大小 最小值 最大值
boolean 1位 - -
char 16位 0 2的16次方-1=65535
byte 8位 -128 +127
short 16位 -2的15次方=-32768 +2的15次方-1
int 32位 -2的31次方 +2的31次方-1
long 64位 -2的63次方 +2的63次方-1
float 32位 1.4E-45 3.4028235E38
double 64位 4.9E-324 1.7976931348623157E308
5.JVM内存模型:
1、栈(stack):局部变量
2、堆(heap): new出来的东西
3、方法区(method area):类的信息,常量池,静态池
4、程序计数器
5、本地方法栈
6.顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有if…else和switch-case两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
7.课堂中:
int g = 67;
// 判断g是否是负数
if (g < 0) {
System.out.println(“负数”);
}
// 判断g是偶数还是奇数
if (g % 2 == 0) {
System.out.println(“偶数”);
} else {
System.out.println(“奇数”);
}
// 判断g的等级
if (g >= 90) {
System.out.println(“优秀”);
} else if (g >= 80) {
System.out.println(“良好”);
} else if (g >= 70) {
System.out.println(“中等”);
} else if (g >= 60) {
System.out.println(“及格”);
} else {
System.out.println(“不及格”);
}
对下列代码,若有输出,指出输出结果。
int x = 4;
int y = 1;
if (x > 2) {
if (y > 2)
System.out.println(x + y);
System.out.println(“atguigu”);
} else
System.out.println("x is " + x);
boolean b = true;
if(b == false) //如果写成if(b=false)能编译通过吗?如果能,结果是?
System.out.println(“a”);
else if(b)
System.out.println(“b”);
else if(!b)
System.out.println(“c”);
else
System.out.println(“d”);
int g = 67;
switch (g / 10) {// 使用switch 判断g的等级
case 10:
case 9:
System.out.println(“优秀”); break;
case 8:
System.out.println(“良好”); break;
case 7:
System.out.println(“中等”); break;
case 6:
System.out.println(“及格”); break;
default:
System.out.println(“不及格”);
}
String season = “秋天”;
// 声明变量season是字符串,注意JDK版本是7以上才能支持
// 执行swicth分支语句
switch (season) {
case “春天”:
System.out.println(“春暖花开.”);break;
case “夏天”:
System.out.println(“夏日炎炎.”);break;
case “秋天”:
System.out.println(“秋高气爽.”);break;
case “冬天”:
System.out.println(“冬雪皑皑.”);break;
default:
System.out.println(“季节输入错误”);
}
public class ForDemo2 {
public static void main(String[] args) {
// 使用for循环求1~100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(“1~100的和是:” + sum);
}
}
// 嵌套的for循环打印九九乘法表
//第一个for控制行
for (int i = 1; i <= 9; i++) {
//第二个for控制列,即每行中输出的算式
for (int j = 1; j <= i; j++) {
// 输出ji=n格式,例如23=6
System.out.print(j + “*” + i + “=” + i * j + " ");
}
// 换行
System.out.println();
}
public class WhileDemo {
public static void main(String[] args) {
// 使用while循环求1~100的和
int sum = 0;
int i = 1;
while (i <= 100) {
sum += i;
i++;
}
System.out.println(“1~100的和是:” + sum);
}
}
public static void main(String[] args) {
// 使用do-while循环求1~100的和
int sum = 0;
int i = 1;
do {
sum += i;
i++;
} while (i <= 100);
System.out.println(“1~100的和是:” + sum);
}
public class BreakDemo1 {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
System.out.println(“找到目标,结束循环!”);
// 终止循环
break;
}
System.out.println(i);// 打印当前的i值
}
}
}
public static void main(String[] args) {
// 外层循环,outer作为标识符
outer: for (int i = 0; i < 5; i++) {
// 内层循环
for (int j = 0; j < 3; j++) {
System.out.println(“i的值为:” + i + " j的值为:" + j);
if (j == 1) {
// 跳出outer标签所标识的循环。
break outer;
}
}
}
}
8.练习
1、请编写程序,实现计算“1+3+5+7+…+99”的值。
提示: 1) 使用循环语句实现自然数1~99的遍历。
2) 在遍历过程中,通过条件判断当前遍历的数是否为奇数,如果是就累加,否则不加。 请按照题目的要求编写程序并给出运行结果。
int sum=0;
for (int i = 1; i < 100; i = i + 2) {
if(i%2==1){
sum=sum+i;
}
}
System.out.println(“1+3+5+7+…+99=” + sum);
2、已知函数 请设计一个方法实现上面的函数,根据传入的值x的不同,返回对应的y值。
提示: 1) 定义一个static修饰符修饰的方法,方法接收一个int类型的参数x,返回值为int类型。
2) 在方法中使用if…elseif…else 语句针对x的值进行三种情况的判断。
3) 根据判断结果分别执行不同的表达式,并将结果赋予变量y。
4) 在方法的最后返回y的值。
5) 在main方法中调用设计好的方法,传入一个int型的值,将方法的返回值打印。
public static void fun(int x){
int y;
if(x<0){
y=x*x‐1;
}else if(x==0){
y=0;
}else {
y=x+3;
}
System.out.println(“y=”+y);
}
public static void main(String args[]){
fun(0);
}
3、请编写程序,实现对数组{25,24,12,76,101,96,28} 的排序。
public static void sortArrr(int arr[]) {
for(int i=0;i<arr.length‐1;++i) {
for(int j=0;j<arr.length‐i‐1;++j) {
if(arr[j]>arr[j+1]) {
int t=arr[j]; arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(int item:arr) {
System.out.print(item+" ");
}System.out.println();
}
3.用数组求出斐波那契数列的前20项值
public static void feibo() {
int arr[]=new int [20];
arr[0]=1; arr[1]=1;
for(int i=2;i<arr.length;++i) {
arr[i]=arr[i‐1]+arr[i‐2];
}
for(int item:arr) {
System.out.print(item+" ");
}
System.out.println();
}
public static void main(String args[]) {
feibo();
}
4.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
public static void insertArr(int n,int arr[],int len) {
int index=0;
for(int i=0;i<len;++i) {
if(n<arr[i]) {
index=i; break;
}
}
for(int i=len+1;i>index;‐‐i) {
arr[i]=arr[i‐1];
}
arr[index]=n;
for(int item:arr) {
System.out.print(item+" ");
}
System.out.println(); }
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
int a[]= {12,24,25,28,76,96,101,20,0,0,0} ;
insertArr(20, a, 8);
}
5.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
public static void swapArr(int arr[]) {
int max=arr[0],min=arr[0];
int maxIndex=0;
int minIndex=0;
for(int i=0;i<arr.length;++i) {
if(max<arr[i]) {
max=arr[i];
maxIndex=i;
}
if(min>arr[i]) {
min=arr[i];
minIndex=i;
}
}
int t=arr[maxIndex];
arr[maxIndex]=arr[0];
arr[0]=t;
t=arr[minIndex];
arr[minIndex]=arr[arr.length‐1];
arr[arr.length‐1]=t;
for(int item:arr) {
System.out.print(item+" ");
}
System.out.println();
}
6.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
public static void moveArr(int arr[],int m) {
int t[]=new int[m];
for(int i=0;i<m;++i) {
t[i]=arr[arr.length‐m+i];
}
for(int i=0;i<m;++i) {
arr[arr.length]=arr[arr.length‐i];
}
for(int i=0;i<m;++i) {
arr[i]=t[i];
}
for(int item:arr) {
System.out.print(item+" ");
}
System.out.println();
}