java的方法--函数
(不是数学意义上的,相当于计算机中的程序)
Java方法详解(Java基础)_辰兮要努力的博客-CSDN博客_java方法详解
写博客时引用链接可能出现的问题
可能是不同浏览器之间的编码不同,导致引用链接长度显示不一
外部浏览器复制链接到本浏览器:
https://blog.csdn.net/geekmubai/article/details/81975990?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165431019216782350931450%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165431019216782350931450&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81975990-null-null.142^v11^pc_search_result_control_group,157^v13^control&utm_term=方法重载&spm=1018.2226.3001.4187https://blog.csdn.net/geekmubai/article/details/81975990?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165431019216782350931450%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165431019216782350931450&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81975990-null-null.142%5Ev11%5Epc_search_result_control_group,157%5Ev13%5Econtrol&utm_term=%E6%96%B9%E6%B3%95%E9%87%8D%E8%BD%BD&spm=1018.2226.3001.4187Java方法重写与重载的区别_徐念安的博客-CSDN博客_java方法重写和方法重载的区别
另外谷歌双核浏览器和火狐浏览器在编译CSDN文章时也有不同,双核在文本编译区鼠标会消失(程序员小哥的问题,没处理好鼠标事件也许)
java方法重载--类似于父子继承(有关系)
public class 方法重载 {
public static void main(String[] atgs){
//调用
int sum1=add01(1,2);
int sum2=add02(1,2,3);
double sum3=add03(1.2,2.3);
//打印
System.out.println("sum1="+sum1);
System.out.println("sum2="+sum2);
System.out.println("sum3="+sum3);
}
//方法实现两数相加
public static int add01(int x,int y){
return x+y;
}
//方法实现三个整数相加
public static int add02(int x,int y,int z){
return x+y+z;
}
//实现两个小数相加
public static double add03(double x,double y){
return x+y;
}
}
效果
可能出现的问题
这里定义了浮点型,两个数据好像必须都是浮点型(强制带小数点),也许和java的语言性质有关系,必须严格
数组定义
int x=new int[100];
//相当于
int[]x;
x=new int[100];
冷知识:索引又称角标
案例演示如何定义数组,并显示元素以及长度
public class 数组定义 {
public static void main(String[] args){
int [] arr;//声明变量
arr=new int[3];//创建数组对象
System.out.println("arr[0]="+arr[0]);//打印元素
System.out.println("arr[1]="+arr[1]);
System.out.println("arr[2]="+arr[2]);
System.out.println("数组的长度是:"+arr.length);//打印数组长度
}
}
运行结果:
静态初始化数组
一般使用第二种
public class 静态初始化数组 {
public static void main(String[] args){
int[]arr={1,2,3,4};//静态初始化
System.out.println("arr[0]"+arr[0]);
}
}
可能出现的问题:
1.当用第一种int【4】{1,2,3,4}的时候编译器可能因为【4】和{1,2,3,4}的不一致(元素从0开始,可能分配了5个),导致编译器报错,认为存在安全隐患
2.每个数组都有一个范围0-length-1,访问数组的索引(角标)不能超出这一范围,否则也会报错
3.空指针异常,下面会解释
数组中空指针异常
public class 空指针异常 {
public static void mian(String[] args){
int[] arr=new int[3];
arr[0]=5;
System.out.println("arr[0]="+arr[0]);
arr=null;//将变量arr置为null
System.out.println("arr[0]="+arr[0]);
}
}
结果我的编译器idea直接没有了编译运行的绿色原点,不让运行,这就是空指针异常;
数组遍历
利用for循环来访问或打印每一个数组(数据结构与算法常用的操作)
public class 数组循环遍历 {
public static void main(String[] args){
int[]arr={0,2,3,4,5};
//for循环遍历数组
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);//通过索引访问元素
}
}
}
获取数组最值
public class 获取数组最值 {
public static void main (String[] args){
int[] arr={4,1,6,3,9,8};
int max=getMax(arr);//写了一个得到最大值的方法(函数)
System.out.println("max="+max);//打印最大值
}
static int getMax(int[]arr){
int max=arr[0];//用max变量记录最大值,首先假设第一个值为最大
for(int x=1;x<arr.length;x++){
if(arr[x]>max){//比较arr[x]的值是否大于max
max=arr[x];//如果条件成立,把arr[x]的值赋给max
}
}
return max;
}
}
数组排序(冒泡排序)
冒泡排序(超详细)_@烟雨倾城ゝ的博客-CSDN博客_冒泡排序
小泡泡向入口上浮,大泡泡下沉(堆栈模型下)
出现了问题
我按网上的搜索过了,问题说是没有引入printArray所在的库,但是引入后并没有解决,我认为可能是和jdk的版本问题,也请大佬看到这帮忙在评论区解决
import java.util.Arrays;
public class 数组冒泡排序 {
public static void main(String[] args){
int[]arr={9,8,3,5,2};
System.out.print("冒泡排序前:");
printArray(arr);//打印数组元素
bubbleSort(arr);//调用排序方法
System.out.print("冒泡排序后:");
printArray(arr);//打印数组元素
}
//定义打印数组元素的方法
public static void bubbleSort(int[] arr){
//定义外层循环
for(int i=0; i<arr.length-1;j++){
//定义内层循环
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){//比较相邻元素
//三行代码(实质是三个变量)用于交换两个元素
int temp =arr[j];
arr[j]=arr[j+i];
arr[j+i]=temp;
}
}
System.out.print("第"+(i+1)+"轮排序后");
printArray(arr);//每轮比较结束打印数组元素
}
}
}
冒泡排序这部分可以跳过,数据结构算法会有深入了解,不建议任何一门语言的初学者把排序算法(冒泡这类)放在前期学习
多维数组
三种定义方法
int[][]arr=new int[3][4];
int[][]arr=new int[3][];
int[][] arr={{1,2},{3,4,5,6},{7,8,9}};
案例
public class 多维数组 {
public static void main(String[] args){
int[][]arr=new int[3][];//定义长度为3的二维数组
arr[0]=new int[]{11,12};//为数组元素赋值
arr[1]=new int[]{21,22,23};
arr[2]=new int[]{31,32,33,34};
int sum=0; //定义变量记录总销售额
for(int i=0;i<arr.length;i++){//遍历数组元素
int groupSum=0;//利用变量记录小组销售总额
//遍历小组内每个人的销售额
for(int j=0;j<arr[i].length;j++){
groupSum=groupSum+arr[i][j];
}
sum=sum+groupSum;//累加小组销售额
System.out.println("第"+(i+1)+"小组销售额为:"+groupSum+"万元。");
}
System.out.println("总销售额为:"+sum+"万元");
}
}
对于没有见过的结构和方法,给你搜到会用即可
思考&和&&区别
&和&&的区别(简单易懂)_大雄有哆啦梦的博客-CSDN博客_& &&的区别
简述&和&&的区别?_antushengV的博客-CSDN博客_简述&和&&的区别
随机点名器
import java.util.Random;
import java.util.Scanner;
public class 随机点名器 {
//1.存储全班同学姓名
//首先创造一个数组容器
//实现能输入 并存储的功能
public static void addStudentName(String[] students){
//输入存储
Scanner sc=new Scanner(System.in);
for(int i=0;i<students.length;i++){
System.out.println("存储第"+(i+1)+"个姓名:");
//接受控制台录入的姓名字符串
students[i]=sc.next();
}
}
//遍历全班同学姓名
public static void printStudentName(String[] students){
//遍历数组,得到每个同学姓名
for(int i=0;i<students.length;i++){
String name=students[i];
//打印同学名字
System.out.println("第"+(i+1)+"个学生姓名"+name);
}
}
// 3.随机点名一人
public static String randomStudentName(String[] students){
//根据数组长度,获取随机索引
int index=new Random().nextInt(students.length);
//通过随机索引从数组中获取姓名
String name=students[index];
//返回
return name;
}
public static void main(String[] args){
System.out.println("-------------随机点名器-------------");
//创建一个可以存储多个同学姓名的容器(数组)
String[] students=new String[3];
//1.存储全班同学姓名
addStudentName(students);
//2.总览全班同学姓名
printStudentName(students);
//3.随机点名其中一人
String randomName - randomStudentName(students);
System.out.println("被点到名的同学是:"+randomName);
}
}
显示;问题,但检查两边后认为写了个bug,也请大家一起帮我改正
总感觉最后随机点名这个东西也许可以优化,js来写这种功能就很好