(六)、经典用法:
1.猜数字游戏
需要的第一个包: 随机数包
import java.util.Random; //导入包 Randon r=new Random(); //声明包 int number=r.nextInt(100) //范围是 0~99 使用包
代码展示:
import java.util.Scanner; //导输入包 import java.util.Random; //导随机数包 public class one { public static void main(String []avgs) { Scanner sc=new Scanner(System.in); Random r=new Random(); // int Number; Number=r.nextInt(100)+101; // 100-200 System.out.println("系统给定的随机数是:"); System.out.println(Number); int i,j=0; while(true) { System.out.println("请您再输入一个数字\n"); i=sc.nextInt(); j++; if(i>Number) { System.out.println("您猜的数字大了\n"); } else if(i<Number) { System.out.println("你猜的数字小了\n"); } else break; } System.out.println("您一共用了"+(j)+"次机会赢得了游戏"); } }
效果展示:
2.回文数:
基本思路:回文数有一个特点,那么就是首尾堆成,比如说12321 是一个回文数,1232 这不是一个回文数.根据这个特点,我们可以知道把个位、十位…反过来也是等于原来的数字的,所以我们可以知道基本操作 :
gw =x%10; x=x/10,然后用sum进行颠覆运算.
代码展示:
import java.util.Scanner; //导输入包 public class one { public static void main(String []avgs) { System.out .println("请您输入一个三位数以上的数字:\n"); Scanner sc=new Scanner(System.in ); int number=sc.nextInt(); int sum=0,temp=number; while(number!=0) { int gw=number%10; number=number/10; sum=sum*10+gw; } System.out.println(temp); System.out.println(sum); System.out.println(temp==sum); //System.out.println("不是一个回文数\n"+sum); } }
3.求被除数和除数的商和余数
题目描述:假如我们给您两个数据一个被除数一个是除数。要求我们不能用 / % 求取这两个数的商和余数;
基本思路:首先我们要知道一个知识,那就是:被除数1-除数=被除数2 … 被除数2-除数=被除数3…被除数n-除数=余数 ,然后他们计算的次数就是我们要的商
代码展示:
package one; import java.util.Scanner; public class on { public static void main(String []avgs) { System.out.println("请您输入被除数和除数分别为:"); Scanner sc=new Scanner(System.in); int bnumber,number,count=0; bnumber=sc.nextInt(); number=sc.nextInt(); while(bnumber>=number) //假如说被除数大于除数就进入循环体,否则推出 { bnumber-=number; count++; //计算商的 } System.out.println("商为:"+count); System.out.print("余数为:"+bnumber); } }
效果展示:
4.数组求最大值:
题目描述:
我们已经知道了一个数组 的数,然后求最大值:
代码展示:
package test; // 包名 import java.util.Scanner; public class test1 { //项目名 public static void main(String []avgs) { int arr[]=new int[] {22,35,87,26,20}; int max; max=arr[0]; for(int i=0;i<arr.length;i++) { if(arr[i]>max) { max=arr[i]; } } System.out.print("最大值为:"+max); } }
效果展示:
5.数组中的数据交换
题目描述:已知数组arr的数字,让他们进行首尾交换,比如说 12345 ,交换后为:54321.
刨析: 定义两个整形变量,i,j ; 循环条件是 i <arr.length ; 自增自减
for(int i=0,j=arr.length-1;i<arr.length/2;i++,j--)
代码展示:
package test; // 包名 public class test1 { //项目名 public static void main(String []avgs) { int arr[]=new int[] {22,35,87,26,20}; for(int i=0,j=arr.length-1;i<arr.length/2;i++,j--) { int temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } System.out.println("交换后的数据为:"); for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } } }
效果展示:
7.数组堆内存和栈内存:
1)、栈内存的概念:
栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。
eg:
package test public class one{ public static void main(String []avgs) { int a; //栈 int b=3; //栈 char*p; //栈 } }
其中函数中定义的局部变量按照先后定义的顺序依次压入栈中,也就是说相邻变量的地址之间不会存在其它变量。栈的内存地址生长方向与堆相反,由高到底,所以后定义的变量地址低于先定义的变量,比如上面代码中变量 s 的地址小于变量 b 的地址,p2 地址小于 s 的地址。栈中存储的数据的生命周期随着函数的执行完成而结束。(先进先出)
2)、图解
3)、堆内存
堆内存的定义:如果有关键字 new 加持的,那么就放在堆区,比如果 数组