遍历求最大值
//定义数组
int arr[]= {11,22,33,44,55};
//调用方法遍历数组
int max=getMax(arr);
System.out.println(max);
}
public static int getMax (int arr[]) {
int max=arr[0];
for (int i=1;i<arr.length;i++) {
if(arr[i]>max) {
max=arr[i];
}
}
return max;
确定一个数其是否存在
int arr[]= {44,55,66,99,77};
boolean flag=contains(arr,55);
System.out.println(flag);
}
public static boolean contains(int[]arr,int number) {
for(int i=0;i<arr.length;i++) {
if(arr[i]==number) {
return true;
}
}
return false;
return与break的区别
return:1.其实和循环没关系,跟方法名有关,表示1结束方法,2返回结果
2.如果执行到了return,那么整个方法全部结束,里面的循环也会随之结束
break:其实和方法没有什么关系,结束循环和switch有关
Java内存分配
栈:方法运行时使用的内存,方法进栈运行,运行完毕就出栈
堆:new出来的,都在堆内存中开辟一个小空间
方法区:存储可以运行class的文件
本地方法栈:jvm在使用操作系统功能的时候使用,和我们开发无关
寄存器:给CPU使用,和我们开发无关。
基本数字类型:
整数类型,浮点数类型,布尔类型,字符类型。
基本数字类型:(赋值给其他变量,也是赋的真实值)
数据值是存储在自己空间中
引用数据类型:(赋值给其他变量,赋的是地址值)
数据值储存在其他空间中,自己空间中存储的是地址值。
在一个代码中,如果没有new说明其没有栈内存
例:
public static void main(String[]args) {
int number=100;
System.out.println("调用方法之前:"+number);
change(number);
System.out.println("调用方法之后:"+number);
}
public static void change(int number) {
number=200;
}
运行结果:
调用方法之前:100
调用方法之后:100
结论:当我们传递基本数据类型时,传递的是真实数据,形参的改变,不影响实际参数的值
例:
public static void main(String[]args) {
int number=100;
System.out.println("调用方法之前:"+number);
number=change(number);
System.out.println("调用方法之后:"+number);
}
public static int change(int number) {
number=200;
return number;
}
运行结果:
调用方法之前:100
调用方法之后:200
public static void main(String[]args) {
int [] arr= {10,30,20};
System.out.println("调用方法前:"+arr[1]);
change(arr);
System.out.println("调用方法后:"+arr[1]);//两个变量指向同一空间
}
public static void change(int [] arr) {
arr[1]=200;
}
运行结果:
调用方法前:30
调用方法后:200
结论:当传递引用数据类型的时候,传递的是地址值,形参的改变,影响实际参数的值
卖飞机票:
机票价格按照淡季,旺季,头等舱,经济舱收费,输入机票原价,月份和头等舱或经济舱
按照如下计算机票价格:
旺季(5-10月)头等舱九折经济舱6.5折
淡季(11月到次年4月)头等舱7折经济舱6.5折
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入机票的原价:");
int price=sc.nextInt();
System.out.println("请输入当前月份:");
int months=sc.nextInt();
System.out.println("请输入当前的座位类型:");
int seat=sc.nextInt();
//0头等舱,1经济舱
if(months>4&&months<11) {
if(seat==1) {
price=(int)(price*0.9);
}else if(seat==0){
price=(int)(price*0.85);
}
}
else if((months>0&&months<5)||(months>10&&months<13)){
if(seat==1) {
price=(int)(price*0.7);
}else if(seat==0){
price=(int)(price*0.65);
}else{ System.out.println("键盘录入的月份不合法");
}
}
System.out.println(price);
判断101~200之间的质数个数:
public static void main(String[]args) {
int count=0;
for(int i=100;i<=200;i++) {
boolean flag=true;
for(int j=2;j<=99;j++) {
if(i%j==0) {
flag=false;
break;
}
}
if(flag) {
System.out.println("当前这个数字"+i+"是质数");
count++;
}else {System.out.println("当前这个数字"+i+"不是质数");}
}
System.out.println("一共有"+count+"个质数");}
}