• 实参名与形参名可以相同,也可以不同。
  • 方法的重载:在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义,(其中返回值不能作为重载的条件!!!!而且必须在同一个类中!!!!)如:
public static void method(int a){...}
public static void method(char c){...}
  • 数组是存储相同数据类型值的变量的集合

//函数调用输出左三角形
/*
package kk;
import java.util.*;public class hello_world{public static void main(String[] args){Scanner input=new Scanner(System.in);System.out.println("请输入一个整数:");int num =input.nextInt();printStar(num);}public static void printStar(int line){for(int i=1;i<=line;i++){for(int j=1;j<=i;j++){System.out.print("*");}System.out.println();}}
};*/
////函数调用判断闰年
/*
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args){boolean bool=isRunYear(2000);if(bool){System.out.println("闰年");}elseSystem.out.println("平年");}public static boolean isRunYear(int year){if(year%4==0&&year%100!=0||year%400==0){return true;}elsereturn false;}};*/
//方法的重载
/*
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args){int result=add(10,20);}public static int add(int a,int b){return a+b;}public static float add(float a,float b){return a+b;}
};*///数组
/*
package kk;
import java.util.*;public class hello_world{public static void main(String[] args) {int[] nums = new int[5];//第一种声明方式int[] nums1 = new int[]{1, 2, 3, 4, 5};//第二种声明方式int[] nums2 = {1, 2, 3, 4, 5};System.out.println(nums.length);//求数组的长度for (int x : nums1) {        //foreach方法遍历(JDK1.5之后新增的特性)System.out.print(x + " ");}}
};*///JDK1.5可变参数
//可变参数只能是参数列表中的最后一个
//可变参数作为数组使用
package kk;
public class hello_world{public static void main(String[] args){System.out.println(add(2,3));System.out.println(add(2,3,5));}public static int add(int x,int... args){int sum=x;for(int i=0;i<args.length;i++)sum+=args[i];return sum;}
};
  • 使用数组要注意的问题:
  1. 空指针异常(当一个变量为null时,我们去调用了该变量的属性和方法)
    //java.lang.NullPointerException
  2. 数组越界异常
    //java.lang.ArrayIndexOutOfBoundsException
  • 内存分析
    栈内存:用于存储局部、临时变量(基本数据类型)和引用变量 <大小固定>
    堆内存:数组是引用类型,会存放在堆内存中<大小不固定>

//猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
/*
package kk;
import java.util.Scanner;
import java.util.Random;    //生成随机数,注意,是伪随机数
public class hello_world{public static void main(String[] args){int[] nums=new int[5];int len=nums.length;Random r=new Random();  //创建一个可以生成随机数的工具for(int i=0;i<len;i++){nums[i]= r.nextInt(50);  //生成一个50以内的数}Scanner input=new Scanner(System.in);System.out.println("请输入你要猜的数:(50以内)");int userNum=input.nextInt();boolean flag=false;for(int x:nums){if(userNum==x){flag=true;break;}}if(flag)System.out.println("恭喜你,猜对了!");elseSystem.out.println("对不起,没猜对!");}};
*///打印字符三角形
/*
package kk;
import java.util.*;
public class hello_world {public static void main(String[] args) {char cs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};for (int i = 1; i <= cs.length; i++) {for (int j = i; j < cs.length; j++)System.out.print(" ");for (int j = 1; j <= 2 * i - 1; j++)System.out.print(cs[i - 1]);System.out.println();}}};
*/

讨论:
关于不使用中间变量的两数交换:

  1. 异或运算
  2. 加减运算

早期为了减少中间变量对计算机内存的占用,采用中间的方法来交换数据。其实这种交换并不完美,如果交换的两个数都很大,可能会内存溢出。在现在的开发中建议使用中间值来交换数值。

//关于不使用中间变量进行两数交换
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args){//第一种方法int x=10;int y=15;System.out.println("x="+x+"y="+y);x=x^y;y=x^y;x=x^y;System.out.println("x="+x+"y="+y);//第二种方法int a=10;int b=15;System.out.println("a="+a+"b="+b);a=a+b;b=a-b;a=a-b;System.out.println("a="+a+"b="+b);}};

几种排序算法详解:

  1. 冒泡排序
//冒泡排序(是一种稳定的排序算法)
//稳定是指,相同数据的排序的前后位置不发生变化package kk;
import java.util.*;
public class hello_world{public static void main(String[] args){int[] nums={34,4,56,17,90,65};//待排序的数列/*冒泡排序过程34 4 56 17 90 654 34 17 56 65 90 //第一轮比较5次4 17 34 56 65    //第二轮比较4次4 17 34 56       //第三轮比较3次4 17 34          //第四轮比较2次4 17             //第五轮比较1次*///外循环控制轮数for(int i=0;i<nums.length-1;i++)//比较轮数等于数列的长度-1{for(int j=0;j<nums.length-1-i;j++) {if(nums[j]>nums[j+1]){nums[j]=nums[j]+nums[j+1];nums[j+1]=nums[j]-nums[j+1];nums[j]=nums[j]-nums[j+1];}}}for(int n:nums){System.out.println(n);}}
};
  1. 选择排序

//选择排序(是不稳定的排序算法)
/*每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
*//*
34 4 56 17 90 65
4 34 56 17 90 65 //第一轮比较5次
4 17 56 34 90 65 //第二轮比较4次
4 17 34 56 90 65 //第三轮比较3次
4 17 34 56 90 65 //第四轮比较2次
4 17 34 56 65 90 //第五轮比较1次
*/
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args){int[] nums={34,4,56,17,90,65};//待排序的数列int minIndex=0;//用于记录每次比较的最小值的下标//控制轮数for(int i=0;i<nums.length-1;i++){minIndex=i;//每轮假设一个最小值下标for(int j=i+1;j< nums.length;j++){if(nums[minIndex]>nums[j]){minIndex=j;}}//判断需要交换的数的下标是否为自己if(minIndex!=i){nums[minIndex]=nums[minIndex]+nums[i];nums[i]=nums[minIndex]-nums[i];nums[minIndex]=nums[minIndex]-nums[i];}}for(int x:nums)System.out.println(x);}
};
  1. 直接插入排序:

//直接插入排序算法
/*
从后向前找到合适的位置后插入
*/
/*
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args) {int[] nums={34,4,56,17,90,65};//待排序的数列//控制比较的轮数for(int i=1;i<nums.length;i++){int temp=nums[i];//记录操作数int j=0;for(j=i-1;j>=0;j--){if(nums[j]>temp){nums[j+1]=nums[j];}elsebreak;}if(nums[j+1]!=temp)nums[j+1]=temp;}for (int x:nums)System.out.println(x);}
};*/
  1. 二分(折半)查找算法

//二分(折半)查找算法
/*
前提是在已经排好序的数组中,通过将待查找的元素与中间索引值对应的元素进行比较,
若大于中间索引值对应的元素,去右半部分查找,否则,去左半部分查找。找不到返回一个负数。*/
package kk;
import java.util.*;
public class hello_world{public static void main(String[] args) {int[] nums = {10,20,50,65,88,90};//必须是有序的数列!!!int index=binarySearch(nums,90);System.out.println(index);}//二分查找算法public static int binarySearch(int[] nums,int key){int start=0;                //开始下标int end=nums.length-1;      //结束下标while (start<=end) {int middle=(start+end)/2;if(nums[middle]>key){end=middle-1;}else if(nums[middle]<key){start=middle+1;}elsereturn middle;}return -1;}
};
  • Arrays工具类:

//Arrays工具类:用来操作数组(比如排序和搜索的各种方法)
package kk;
import java.util.Scanner;
import java.util.Arrays;
public class hello_world{public static void main(String[] args){int[] nums={45,65,76,87,98,901};//二分查找int index=Arrays.binarySearch(nums,98);System.out.println("找到的下标是:"+index);//输出数组for (int n:nums){System.out.println(n);}//在测试输出数据时,可以使用,更加方便System.out.println(Arrays.toString(nums));//排序int[] nums2={10,32,11,44,543,22,12};Arrays.sort(nums2);         //快速排序System.out.println(Arrays.toString(nums2));//数组的复制int[] nums3=Arrays.copyOf(nums2,10);System.out.println(Arrays.toString(nums3));//判断两个数组的值是否相等System.out.println(Arrays.equals(nums2,nums3));//填充数组Arrays.fill(nums2,1);System.out.println(Arrays.toString(nums2));}};

Java(学习笔记三,kk自用)相关推荐

  1. java学习笔记(三):前端miniUI控件库入门

    java学习笔记(三):前端miniUI控件库入门 最近在一家公司实习学习,一上来就需要学习了解相关的前端内容--miniUI.而这个内容自己本身并没有了解学习过,上手也是遇到了不少的问题,于是想把自 ...

  2. java注解和反射——狂神说java学习笔记三

    原文链接:公众号狂神说 视频教程[狂神说B站]: https://www.bilibili.com/video/BV12J41137hu 如有侵权,联系立删 什么是注解 Annotation是从JDK ...

  3. 【Java学习笔记三】抽象类与接口

    对象的类型转换分为自动转换和强制转换两种 派生类向基类转换是自动转换,因为派生类中包含基类 基类向派生类的转换是强制转换 强制类型转换是通过在转换对象前面使用圆括号运算符来实现,圆括号内为要转换的目标 ...

  4. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  5. JAVA学习笔记(三十一)-电影系统案例

    伪代码 系统的角色类准备 用户购票 用户评分 商家功能 首页设计 先封装 public class Business extends User{// 店铺名称private String shopNa ...

  6. JAVA学习笔记(三十九)-打印流

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; i ...

  7. java学习笔记(三)----成员权限,构造函数,this用法

    成员权限                         本类    同包类    非同包子类    非同包非子类 public         y        y               y  ...

  8. 疯狂java学习笔记三

    面向对象 1.继承 extends关键字 抽象类 implement关键字 java1.8(函数式接口)–>Lamba表达式–>foreach方法–>函数接口 java1.8默认方法 ...

  9. Java学习笔记项目三:开发团队调度软件(尚硅谷)

    JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...

  10. 2021-05-31以及2021-06-01(从136开始) JAVA学习笔记

    JAVA学习笔记 1学习易错点: 2 具体内容 112 构造方法 113 构造方法的注意事项 114 标准类的制作!!! 115 api string 118 string构造方法![在这里插入图片描 ...

最新文章

  1. python 调用微软语音合成并保存为wav
  2. 求Sn = a+aa+aaa+...+aaaaaa(n个a),其中a是一个数字,n代表a的位数,例如 2+22+222+2222+22222(此时n=5),n由键盘输入。
  3. JetBrains 2020 Java调查报告:中国开发者使用比例最高,Java 8最受欢迎
  4. “达观杯”文本智能处理挑战赛代码示例
  5. 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
  6. CINTA:陪集与拉格朗日定理
  7. 公众号菜单栏如何添加设置一键导航?
  8. [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料(1)
  9. 百度分享链接批量转存到百度网盘
  10. IDEA Java 死锁 解决死锁状态的三种方法
  11. 【STM32F407】第2章 ThreadX FileX文件系统介绍
  12. 手机上安装FTP服务器,通过FTP实现计算机上用FTP客户端对手机文件的无线连接访问
  13. c32+c32asm
  14. java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
  15. luoguP5108 仰望半月的夜空 [官方?]题解 后缀数组 / 后缀树 / 后缀自动机 + 线段树 / st表 + 二分...
  16. python中n 是什么意思_python中\n是什么意思啊?
  17. 有道字典主窗口初始化失败、暴风影音停止工作的诡异问题
  18. GNU Radio3.8:创建自定义的QPSK块(C++)
  19. JFrog Artifactory 二进制软件制品仓库介绍
  20. 常用电磁仿真软件的特点

热门文章

  1. android动态获取地理位置权限,Android6.0获取GPS定位和获取位置权限和位置信息的方法...
  2. “创意云”大规模在线创作服务平台
  3. 微信小程序——设置背景图片
  4. 2022电大国家开放大学网上形考任务-开放英语1非免费(非答案)
  5. 华为:决定起诉美国政府
  6. 国内国际期货,外汇,现货跟单、量化交易系统
  7. 初识 GDPR:史上最严格的数据保护条例
  8. 获取2020年中国大学前20名在各省分布(python实现)
  9. 通达OA二次开发手册
  10. 第55届高博会余温未减,中科易安联网智能门锁获全国高校青睐