Break&Continue
break与continue这两个语句也算是C语言里的常客了,在Java里差别也不是很大想必大家对他们也不是很陌生了。这里对break的用法进行补充:我们可以通过对一层循环添加标签的方式来控制break跳出那一层循环(实例如下
public class CirculationTest {
public static void main(String[] args) {
for(int i=0;i<3;i++){
out:if(i>=1){
System.out.println("emmm");
break out;
}
System.out.println("wryyy");
}
}
}
标签的书写格式为:label:
方法
Java语言中的方法,我们可以将其视为C语言中的函数,它的作用也是减少冗余代码,简化代码,但是Java语言当中方法“不能独立存在”,我们需要将方法定义在类里(示例如下):
/*
方法声明格式:
[访问权限修饰符 修饰符] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;......
[return 返回值;]
}
*/
public class Idea {
public static void main(String[] args) {
printf();
}
public static void printf(){
System.out.println("yesyesyes");
}
}
另外我们需要主义的问题就是如果我们需要调用的方法与我们当前所在的类不同,则我们使用的时候需要先说明所调用的方法在哪个类里面(示例如下):
public class CirculationTest {
public static void main(String[] args) {
for(int i=0;i<3;i++){
out:if(i>=1){
System.out.println("wuhu");
break out;
}
System.out.println("wryyy");
}
Idea.printf();
}
}
同理,在不同包里面调用也需要指出包名:
public class ChangeType {
public static void main(String[] args) {
day03.Idea.printf();
}
}
接着,我们来了解以下Java的传参:
其实写法跟C语言一模一样,都是在方法名后面的小括号里面进行声明,并无需要特别强调的,不过这里我们可以进一步使用文档注释来提高我们代码的可读性,通过文档注释我们可以对代码的功能以及参数要求进行说明,示例如下:
import java.util.Scanner;
public class Idea {
public static void main(String[] args) {
printf();
Scanner num=new Scanner(System.in);
int num1,num2;
num1=num.nextInt();
num2=num.nextInt();
System.out.println("最大值为:"+max(num1,num2));
}
public static void printf(){
System.out.println("yesyesyes");
}
/**
*
* @param a 这是一个int类型的数据,不要塞乱七八糟的数据类型进来
* @param b 塞了就报错,你就说你塞不塞吧
* @return
*/
public static int max(int a,int b){
int c = a>b?a:b;
return c;
}
}
当我们光标放在max函数下的时候会显示如下的图像(这里Returns写的s但是对于方法来说还是只能返回一个定义类型的返回值):
数组
Java数组概念:Java语言中数组本身是引用数据类型,是一个对象,它可以存储基本数据类型也可以存储引用数据类型,创建时必须指定长度且长度不可变,每个元素空间连接。实际上跟C语言中的数组并没有太大差别。
不过相信大家最关心的还是创建数组的语法,那么下来给出创建数组的语法以及示例:
import java.util.Arrays;
public class Suzu {
public static void main(String[] args) {
//创建数组的语法:
//数据类型[] 数组名字;(Java语言中习惯于使用第一种)
//数据类型 数组名字[];
int[] arr=new int[3];
System.out.println(Arrays.toString(arr));
}
}
一般而言我们直接输出定义好的数组会输出这个数组在内存中的地址(这个地址是十六进制编码的整数)。不过我们可以通过导入包:import java.util.Arrays; 并使用其中的Arrays.toString方法可以让系统自己赋予其默认值并输出,在使用使用的时候注意区分方法所对应的传参格式:
如上图所示:在实际使用过程中注意区分。通过观察我们会发现没有String字符串的输出传参格式。其实当我们准备使用Arrays.toString输出字符串时,需要观察是否有Object[] a这一条。Object[] a这种格式在Java语言中就相当于是“老大”,它可以涵括目前我们所接触的所有类。(系统默认初始化String类型数组的时候全部初始化为null)
当我们一直数组初始数值,且其固定的时候,可以使用如下的语法:
int[] a = {1,2,3,4};
数组的下标/索引:这一部分于C语言中的概念亦无差别,直须注意索引从零开始,索引的类型是整数以及非法越界问题即可。
数组遍历:
Java语言当中能够遍历数组的方法有很多,这里我们暂时只介绍两种:for循环与增强for循环:
for循环与C语言中遍历循环的一样:for(int i=0;i<(索引);i++){}
这里我们着重介绍以下增强for循环:增强for循环的格式如下:
for(元素类型 临时变量:遍历的数组){临时变量}
增强for循环的大概原理就是每一次便利的时候将当前次的数组中的数赋予临时变量。下面是我给出的使用示例:
import java.util.Arrays;
import java.util.Scanner;
public class Suzu {
public static void main(String[] args) {
Scanner num=new Scanner(System.in);
int[] arr=new int[3];
System.out.println(Arrays.toString(arr));
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
arr[i]=num.nextInt();
}
for(int x:arr){
System.out.println(x);
}
}
}
当然并不是说增强for循环就一定比for循环好用,增强for循环它的缺点在于不肯空,只要进入了增强for循环,那么直到结束我们都无法调用控制它。所以在敲代码的日常中我们对于两种for循环还是要根据所使用的情景进行甄别。
冒泡排序与选择排序
关于排序的问题,日后还会有很多排序的方法,在这里我们先暂时学习这两种较为简单易于理解的排序:
冒泡排序:冒泡排序的逻辑原理就是将相邻的两个数据大小进行比对然后交换,最后排序代码实现如下:
int[] sde={1,4,46,32,532,13324,543};
for(int i=0;i<sde.length-1;i++){
//外层循环
for(int j=0;j<sde.length-1-i;j++){
//内层循环,每排序玩一次就少一次排序次数
if(sde[j]>sde[j+1]){
//两两比较大小然后交换
int temp=sde[j+1];
sde[j+1]=sde[j];
sde[j]=temp;
}
}
}
选择排序:选择排序就是将我们需要排序的东西分成两组,一组成为有序去一组称为无序区,将有序区的最后一个数据与无序区进行比较最后将需要的数据放入有序区实现排序,代码实现如下:
int[] din={9,4,8,2,1,0};
for(int i=0;i<din.length-1;i++){
//外层的循环,不可以在最后一个比较
for (int j=i+1;j<din.length;j++){
//无序区
if(din[i]>din[j]){
//进行比较然后交换
int temp=din[i];
din[i]=din[j];
din[j]=temp;
}
}
}