控制台输入:
控制台输入:仅在javaSE中测试程序时使用,向程序中实现输入数据,java中提供了一个类Scanner,使用类Scanner类去创建一个对象(具体的可以使用的,对象在内存中存储)时,需要System.in来获得输入流对象,因为实际上还是 System.in在取得用户输入。
Scanner的next()方法用以取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型。
测试案例:
package text1;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
//读入的内容是一个字符串,程序执行到此行时,会等待控制台输入,按回车键表示输入完成,程序继续向下执行。
String name = scanner.next();
System.out.println("请输入年龄:");
//读入的是一个整数
int age = scanner.nextInt();
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
流程控制语句:
1.条件语句:
if选择语句:不建议if,else语句块省略{},省略后if,else只对紧跟着的内行代码有效。
基本的if条件结构:
if(条件表达式){
条件为真执行代码块
}
if-else条件结构
if(条件表达式){
条件为真执行代码块
}
else{
条件为假执行代码块
}
if-else语句的另一种形式:
if(条件表达式1){
}
else if(条件表达式2){//满足一个条件,流程自动结束
}
else if(条件表达式n){
}
swith语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。
表达式值类型:byte、short、int、char、枚举类型、String类型。
选项值1,2,3类型需要和表达式的类型一致,值1,2,3必须是字面量(常量),且值不能重复。
匹配的case语句块执行完成后,如果没有break结束,则继续向下执行下一个case,直到遇到break;如果没有与表达式匹配的选项,则执行default语句,没有default则结束swich语句。
switch(表达式){
case 值1 :代码块;
break;
case 值2 :代码块;
break;
...
case 值n :代码块;
break;
default:默认代码块;
}
if与switch的区别与联系:
switch可以实现的,if都可以实现,if条件更灵活,switch适用于一些固定选项的选择,在固定选项执行中,效率更高。
2.循环语句:
功能:在某些条件满足的情况下,一直重复做某些事情。
循环语法格式:
循环变量初始化;进入循环的条件;循环体(循环中要执行的代码);循环变量的更新。
循环语句分类:
while、do while、for;
while:先条件判断,不成立不能进入到循环中。
while(进入循环体的条件){
循环体
}
do{ }while():先执行,后判断,即使条件不成立,也至少执行一次。
do {
语句1;语句2;语句n;
}
while(逻辑表达式);
for语句:首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句,接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false。
public static void main(String args[]) {
for (int i = 1; i <= 10; i++) {
System.out.println(“i=" + i);
}
}
break:用于终止某个语句块的执行,在循环语句体中,可以强行退出循环。
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,退出循环
if (i == stop){
break;
}
System.out.println(" i= " + i);
}
continue:用于终止某次循环过程,跳过循环体中 continue 语句下 面未执行的循环,开始下一次循环过程。
for(int i=0;i<10;i++){
if(i==5){
continue;
}
System.out.println(i);
}
循环嵌套:
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层 循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
结束外层循环:如果需要从多层循环跳出,则需要使用标签,定义一个标签,如label,然后在需要跳出的地方,用break label就行了。
案例:
//输出**
//在内层循环中,结束外层循环,可以使用标签,为循环做一个标记
outer:for(int i = 1;i<=4;i++){
for(int j = 1;j<=5;j++){
if(j==3){
//break只能终止当前所在内层循环
break outer;
}
System.out.println("*");
}
System.out.println();
}
Java中的方法:
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
方法:类似于C语言中的函数,是解决一类问题的步骤的有序组合,属于类或者对象,定义一个名字,通过类名或者对象直接调用。
需要多次使用的代码就可以定义为一个方法,多次调用就可以。
例如:
取款()
存款()
查询()
语法格式:
[访问权限修饰符(public) 修饰符] [返回值类型] 方法名(形参类型 参数名){
}
修饰符:定义了该方法的访问类型。 形式参数: 在方法被调用时用于接收外界输入的数据。 实参:调用方法时实际传给方法的数据。 返回值:方法在执行完毕后返还给调用它的环境的数据。 返回值类型:如int等,void表示方法没有返回值。
案例:
public class MethodDemo1 {
//定义一个方法,用来专门打印乘法口诀表
public void multi(){
for (int i = 1; i <=9 ; i++) {
for (int j = 1; j <= i ; j++) {
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println();
}
}
//打印row行的直角三角形
//形参: 数据类型 参数名(可以自定义参数名)
public void print(int row){
for (int i = 1; i <=row ; i++) {
for (int j = 1; j <=i ; j++) {
System.out.print("*");
}
System.out.println();
}
}
//两位整数加法运算
//方法如果有返回值,必须声明返回值的类型
public int compute(int a,int b){
int c = a+b;
return c;//从方法中向调用处返回一个结果
}
public void test(){
int a = 10;
int b = 5;
if(a>b){
System.out.println("a>b");
return;//return 后面没有值的时候,只表示方法终止,不表示方法有返回值
}
//下行代码不执行
System.out.println("aaaaaaaaaa");
}
public void test1(){
for (int i = 0; i < 10; i++) {
if(i==5){
return;
}
System.out.println(i);//0 1 2 3 4
}
}
}
注意:①static修饰方法属于类,可以直接通过类名调用;
②不加static修饰,方法属于对象,需要通过对象调用。
public class Run {
public static void main(String[] args) {
//打印乘法口诀表
//加static修饰时可以通过类名直接调用
//MethodDemo1.multi();
//方法没有加static修饰的方法需要创建对象来调用
//创建MethodDemo1类的一个对象(具体的一个实际存在的实例)
MethodDemo1 m = new MethodDemo1();
//m.multi();
//m.print(50);
byte a = 10;
long res = m.compute(a,5);
System.out.println(res);
m.test();
m.test1();
}
}
return语句:
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
//将表达式的值返回
return 表达式;
//不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略
return;