tips:
Scanner s =new Scanner(System.in);
函数名 | 特点 |
---|---|
next() | 空格作为结束符,一定要读到有效字符后才结束输入 |
遇到有效字符前的空格,会自动去掉 | |
遇到有效字符后,后面的空格作为分隔符或结束符,不会接收空格后的字符 | |
nextLine() | 以回车键(Enter)为结束符,会输出回车键之前所有的字符,包括空格 |
example:
package scanner;
import java.util.Scanner;//Alt+Enter自动带入java的Scanner类
public class demo01 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);//新建一个scanner类
System.out.println("next方式接收:");
if(s.hasNext())//使用hasNext()判断有无输入
{
String var=s.next();//用next()获取输入
System.out.println("内容为"+var);//显示
}
Scanner sLine=new Scanner(System.in);//新建一个scanner类
System.out.println("nextLine方式接收:");
if(sLine.hasNextLine())//使用hasNextLine()判断有无输入
{
String var=sLine.nextLine();//用nextLine()获取输入
System.out.println("内容为"+var);//显示
}
//!!!!!!对IO流的类记得关闭,避免浪费资源!!!!!!!!!!
s.close();
sLine.close();
}
}
tips:
package scanner;
import java.util.Scanner;
public class demo02 {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int i=0;
float f=0.0f;
System.out.println("请输入数字:");
if(s.hasNextInt())
{
i=s.nextInt();
System.out.println("数据为整数"+i);
}
else if(s.hasNextFloat())
{
f= s.nextFloat();
System.out.println("数据为浮点数"+f);
}
else
{
System.out.println("数据不为整数或浮点数");
}
s.close();
}
}
tips:
最基础的结构,从上到下依次执行
tips:
if(条件一)
{
语句块1;
}
else if(条件二)
{
语句快2;
}
//可叠加多个else if(){}
else//不满足条件一二的余下语句
{
语句块3;
}
tips:
switch(i)
{
case 0:
语句块1;
break;
case 1:
语句块2;
break;
default:
//余下所有
语句块3;
}
tips:
while(条件)
{
语句块;
}
tips:
do
{
语句块;
}while(条件);
tips:
for(初始化;循环条件;更新语句)
{
语句块;
}
tips:
for(type 变量名:数组或者集合对象)
{
System.out.println(变量名);
}
1)声明语句:声明新的局部变量。变量类型type与数组元素类型一致;变量的作用域为循环体内;变量的值与此时数组元素的值相等。
2)表达式:要访问的数组名,或是返回值为数组的方法。
public static void main(String[] args) {
double[] arr={1,2,3,4,5};
System.out.println("普通循环遍历:");
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+",");
}
System.out.println('\n'+"增强for循环遍历:");
for(double j:arr )
{
System.out.print(j+",");
}
}
名称 | 特点 |
---|---|
break | 用于强制终止整个循环语句或switch 语句,跳出整个语句块,执行之后的程序代码 |
continue | 用于跳过某次循环,直接执行下一次循环的判定 |
goto | 在java中作为保留字,但没有正式使用 |
tips:
修饰符 返回值类型 方法名(type 形参名,…)
{
语句块;
return 返回值;
}
type var=方法名(形参:实参,形参:实参,…);
type var=方法名(实参表);
package method;
import java.util.Scanner;
public class demo01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int getNumsMax=0;//数组长度
System.out.println("输入累加数字的个数");
if(sc.hasNextInt()) {
getNumsMax = sc.nextInt();
double[] addNums = new double[getNumsMax];//累加数据存储数组
System.out.println("输入累加的数字,以回车键隔离");
int getNums = 0;//已经获得的输入数据个数
//获取输入的数字
while (getNums < getNumsMax) {
if (sc.hasNextDouble()) {
addNums[getNums] = sc.nextDouble();
getNums++;
}
}
double sum;//累加总和
//调用方法
sum = add(addNums, getNumsMax);
System.out.println("结果为:" + sum);
}
else {
System.out.println("输入有误");
}
sc.close();
}
/**
*
* @param nums:累加数据存储数组
* @param numsLen:累加个数
* @return:累加结果
*/
public static double add(double[] nums,int numsLen)
{
double sum=0;
//遍历累加
for(int i=0;i<numsLen;i++)
{
sum+=nums[i];
}
return sum;
}
}
参考引用自 Java值传递和引用传递详细说明
参考引用自 Java值传递与“ 引用传递 ”
tips:
概 念 名 称 | 内容 |
---|---|
栈帧 | 用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素,包括局部变量表、操作数栈、指向运行时常量池的引用、方法返回地址 |
局部变量表 | 用来存储方法中的局部变量(非静态变量、函数形参)。当变量为基本数据类型时,直接存储值,当变量为引用类型时,存储的是指向具体对象的引用 |
虚拟机栈 | 开始执行一个方法时创建一个栈帧并压栈,在方法结束后,栈帧出栈 |
虚拟机堆 | 堆内存是一块线程共享的区域,对象和数组一般都分配在这一块内存中 |
引用传递 | 在方法调用时,实参的地址通过方法调用被传递给相应的形参,对形参的操作会影响的真实内容 |
值传递 | 在方法调用时,实参通过形参把它的内容副本传入方法内部,在方法内对形参的任何操作,都是对副本的操作,不影响原始值 |
tips:
tips:
example:
package method;
public class demo04 {
public static void main(String[] args) {
for(int i=0;i<args.length;i++)
{
System.out.println("args["+i+"]"+args[i]);
}
}
}
tips:
tips:
tips:
int[] nums;//首选
int nums[];
int[] nums={1,2,3,4,5};
int numsLen=10;
double[] nums=new double[numsLen];
tips:
方法名 | 含义 |
---|---|
Arrays.toString(arr) | 打印数组元素 |
Arrays.sort(arr) | 升序排序 |
Arrays.fill(arr,var) | arr数组内元素全部赋值为var |
Arrays.equals(arr1,arr2) | 比较数组中对应元素值是否相等 |