【三】狂神Java笔记-基础语法

JAVA流程控制

Scanner对象

导入包:java.util.Scanner
基本用法:Scanner s = new Scanner(Syatem.in);
//右边new创建一个对象,通过Syatem.in接受用户的输入并将它封装成Scanner对象

在这里插入图片描述
接受用户输入:
在这里插入图片描述
输入空格就会停止
在这里插入图片描述

next()和nextLine()的区别

在这里插入图片描述
也可以这样写,不需要加if的判断:
在这里插入图片描述
接收到一个浮点数据:f = scanner.nextFloat();
接收到一个整型数据:i = scanenr.nextInt();

String s = scanner.nextLine();
s.equals("hwllo");  //判断接收的字符与hello是否一样,少用==来判断字符串
if(布尔表达式){
	表达式;
}else if{
	表达式;
}else if{
	表达式;
}else{
	表达式;
}

if也可以嵌套,就是if里面可以有if

//JDK7开始可以比较字符串: 'A'
switch(expression){
	case value://语句
	break;
	case value://语句
	break;
	default:
	//语句
}

hashCode :可以理解为每个数据都被赋予一个身份证,然后就用这个身份证去找你要的数据

循环结构

  • while循环
  • do…while循环——会至少执行一次
  • for循环
do{
	//代码语句
}while(布尔表达式)
for(初始化;条件表达式;迭代){
	//代码表达式
}

快捷 100.for

//输出换行
System.out.print("\n");
System.out.println();

增强for循环 循环数组和集合

int[] numbers = {10,20,30,40,50};
for(int x:numbers){
	System.out.println(x);
}
//===========等效效果=====================
for (int i = 0;i<5;i++){
	System.out.println(x);
}
break//循环中强行跳出
continue//直接进入下一次循环,后面的内容不执行

Java的方法

  1. 定义和调用
  2. 方法的重载
  3. 命令行传参
  4. 可变参数
  5. 递归
System.out.println();//System是类;out是输出对象;println()是方法
  • 方法在main方法外自己创建;
  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
  • 原则:一个方法只完成一个功能
//写一个加法的方法
public static int add(int a,int b){
	return a+b;
}

方法包含一个方法头和一个方法体
修饰符:可选,告诉编译器如恶化调用该方法。定义了该方法的访问类型
返回值类型:没有返回值用void
方法名:实际名称
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。
方法体:包含的具体语句,定义该方法的功能。

修饰符 返回值 方法名(参数类型 参数名){
	//方法体、
	return 返回值;
}

方法的调用
调用方法:对象名.方法名
Java支持两种调用方法,根据方法是否有返回值来选择
当方法返回以恶告知对方的时候,方法调用通常被当作一个值。
如果方法返回值时void,方法调用一定是一条语句。

值传递和引用传递

方法的重载

就是在一个类中,有相同的函数名称,但是 形参类型不同 的函数

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

规则:

方法名称必须相同
参数列表比哦徐不同(个数、类型、参数排列顺序不同等)
方法的返回类型可以相同也可以不同
仅仅返回值不同不足以成为方法的重载

方法名称相同时,编译器会自动去匹配

命令行传参

可变参数

  • 在方法声明中,在指定参数类型后加一个省略号
  • 一个方法中只能指定一个可变参数,必须是方法的最后一个参数。任何普通的参数必须在它之前声名。
 public void text(int x,int... i){  //可变参数必须放最后面
	//代码块
}

递归

A方法调用A方法

数组

数组描述的是 相同类型 的若干个数据,按照一定的先后次序排列组合而成。

数组的声名创建
首先必须声名数组的变量,才能在程序中使用数组。语法如下:

dataType[] arrayRefVar;  // 首选的方法,在类型后面加[]

dataTye arrayRefVar[];  //效果相同,但不是首选方法,在变量名后面加[]

Java语言使用new操作符来创建数组,语法如下:

dataType[] arrayRefVar = new dataType[arraySize];

打个比方就是:平时定义我们只能一个个定义,用到数组就是现在我们有了一个箱子,可以同时定义同类型的很多个数值。
没赋值就是默认值String为null,数值为0
获取数组的长度:arrays.length / nums.length

在这里插入图片描述
静态初始化:

int[] a = {1,2,3,4,5,6,7,8,9};  //静态初始化:创建 + 赋值
Man[] mans = {new Man(),new Man()};

int[] b = new int[10];  //动态初始化,包含默认初始化,没有定义则为默认值
b[0] = 10;

在这里插入图片描述

Arrays类

Array类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用。
以字符串的形式表示出来:Arrays.toString();
数组进行升序排序:Array.sort(a);
填充:Array.fill(a,2,4,0); //数组中2-4用0填充,左闭右开区间
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分法查找法操作。
在这里插入图片描述
优化
在这里插入图片描述

稀疏数组

当一个数组中大部分有相同的数值,可以用稀疏数组来保存该数据。
在这里插入图片描述
创建一个二维数组:

int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//输出原始数组
for (int[] ints : array1){
	for (intanInt : ints){
	System.out.print(anInt + "\t");
	}
	System.out.println();
}

转换为稀疏数组:

//获取有效值的个数
int sum = 0;
for (int i = 0;i < 11;i++){
	for(int j = 0;j < 11;j++){
	if (array1[i][j] != 0){   //将原始数组中不是0的数累计
		sum++;
		}
	}
}
System.out.println("有效值的个数:"+sum);

//创建一个稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;

//遍历二维数组,将非零的值,存放在稀疏数组中
int count = 0;
for (int i = 0;i < array1.length;i++){
	for (int j = 0;j < array[i].length;j++){
		if (array1[i][j] != 0){
			count++;
			array2[count][0] = i;
			array2[count][1] = j;
			array2[count][2] = array1[i][j];
			}
		}
	}
	
//输出稀疏数组
System.out.println("稀疏数组");
for(int i = 0;i < array2.length;i++){
	System.out.println(array2[i][0]+"\t"
		+array2[i][1]+"\t"
		+array2[i][2]+"\t");
}

//还原稀疏数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for(int i = 1;i < array2.length;i++){
	array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
System.out.println("输出还原的数组:");
for (int[] ints : array1){
	for (intanInt : ints){
	System.out.print(anInt + "\t");
	}
	System.out.println();
}

//输出稀疏数组
11  11  2
1   2   1
2   3   2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值