Java基础知识(二)

Java基础知识(二)

流程控制

用户输入Scanner类

​ 在Java中用scanner类对象来充当输入流,相当于c++里的cin对象。在黑框中你输入的信息都存储在缓存区,等待scnner对象的读取。

​ 这个对象在java.util.Scanner中所以在你的类上方会有个import java.util.Scanner。

​ Scanner类有这几个成员函数:

  • 判断用户是否还有输入:
    • hasNext:判断用户是否还有输入,以空格、换行符为结束符。(也就是说读取的是你输入空格之前的内容。你如果输入“有 人喜欢我吗?”并输出那个变量,那么你就会得到“有”,是不是很开心?)。
    • hasNextLine:判断用户是否还有输入,以换行符为结束符。(很可惜得不到喜欢的回应了)。
    • hasNextInt:判断用户是否还有输入数字。。。等等hasNext之后可以加好多数据类型。
  • 上边是判断是否还有输入,而下面直接就是读取缓存区的内容了:
    • next:获取缓存区的字符串并返回,还是以空格、换行符为结束符。
    • nextLine:获取缓存区的字符串并返回,以换行符为结束符。
    • nextInt:获取缓存区的数字并返回。
    • 等等。。Float之类的都可以

以上的都是Scanner类的成员函数所以调用时要用对象调用,示例如下:

public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);  //将系统的输入作为参数
    int a = 0;
    if(scanner.hasNext){
        a = scanner.nextInt();
    }
    scanner.close()  //***切记切记,要不然浪费资源
}

重要!重要!重要!:切记要最后要将scanner对象关闭

结构

Java有三种结构,顺序结构、选择结构、分支结构。

1、顺序结构:

  • 最简单的就是顺序结构,就是你一步一步的写就行,只要你不进行各种非正确的骚操作就肯定是对的。

2、选择结构:

  • if…else if…else结构:表达式为逻辑值,也就是true/false,代码块你随便写
if(表达式){
    代码块;
}
else if(表达式){
    代码块;
}
else if(表达式){  //中间写多少else if都可以
    代码块;
}
else{
    代码块;
}

​ 以上代码当其中任意一种情况执行表达式值为true以下的就不执行了,也就是说以上的代码只执行一个代码块。如果你想连续判断并执行那么你就一直if就行了。**值得注意的是else与最近的if是一体的。

if(表达式){
    代码块;
}
if(表达式){
    代码块;
}
  • 还有一种选择结构就是 switch:
switch(数值){
    case 情况1:
        代码块;
        break;
    case 情况2:  //你想加几个情况都可以
        代码块;
        break;
    default:
        代码块;
}

​ 从上向下看 “数值” 是否与 “情况i” 匹配,如果匹配则执行对应的代码块,若不匹配则执行default的代码块。**值得注意的是看见break了吗?在不加break的时,执行完成功匹配的代码块后下面的代码块会都不用判断的执行,只有加上break才能停止继续执行并跳出switch。

3、循环结构:

  • while循环与do while循环:
while(表达式){
    代码块;
}

do{
    代码块
}while(表达式);  //注意这有分号!!!

​ 在while循环中,判断表达式是否为true,若为true则执行代码块,然后再继续判断,直到表达式为false时跳出循环。

​ 在do while中,先执行一次代码块,再判断表达式是否为true,若为true则执行代码块,然后再继续判断,直到表达式为false时跳出循环。也就是说do while循环至少执行一次代码块。

​ 在两者其中还可以插入break、continue关键字,如下:

while(表达式){
    代码块;
    if(表达式){  //当表达式为true,执行以下的break
        break;  //当遇到这个关键字直接退出循环,一般与if相结合。要不然直接硬插个break那循就没啥用了
    }
}
while(表达式){
    代码块;
    if(表达式){
        continue;  //当遇到这个关键字跳出本次循环,也就是执行下一次循环,下面那个111就不输出了
    }
    System.out.println(111);
}
  • for与加强for循环:
for(初始值;表达式;算式){
	代码块;    
}
例如:

for(int i = 0;i < 12;i++){
    System.out.println(i);  //功能就是输出每个i的值
}

​ 这个代码的执行顺序时,初始值 --> 判断表达式是否为true --> 代码块 --> 算式 --> 表达式 --> 代码块 --> 算式,这样一直循环,直到表达式为false时结束循环。

加强for循环
for(type i:arrayName){
	代码块;    
}
快捷键就是直接在数组名后.for就直接出来了

方法

​ 方法就是c++里的函数,不过按照Java里万物皆对象的特点这函数自然就写成成员函数了。

​ 方法怎么写,修饰符+返回值类型+方法名(参数列表) { 代码块 },例如:

public class className{
    public static void main(String[] args){
        func(12);
    }
    public static int func(int i){  //加static目的是不在类中创建对象就能直接调用这个方法
        System.out.println(i);
        return 0;
        /*注意:如果你的返回类型不为空,那么你必须在函数体中的最外层返回一个值,就算你前边加了个if在里面			返回都不行!!!*/
    }
}

​ 方法的重载:相同的方法名可以执行不同的方法体,要求:参数列表不同、函数名相同,其他都无所谓(返回值类型、修饰符)。Java中的方法重载与c++中是相似的。例如:

public class className{
    public static void main(String[] args){
        func(12.1);  //调用的是形参为double的函数
        func(12);  //调用的是形参为int的函数
    }
    
    public static int func(int i){
        i += 1;
        return i;
    }
    public static int func(double i){
        i += 1;
        return (int)i;
    }
}

​ 参数列表不同要求,类型不同、参数数量不同、类型和参数数量都不同,即可重载。

​ 参数还有一种可变参数(就是可以接受多个参数的参数)

  • 规则:只能出现在参数列表中的最后一个
public class className{
    public static void main(String[] args){
        func(1,2,3,4,5);
    }
    
    public static void func(int...args){
        for(int i = 0;i < args.length;i++){
            System.out.println(args[i]);
        }
    }
}

数组

​ 数组是一组有先后顺序的同一类型的元素的集合。

​ 数组的声明:

type[] name;
type name[];

​ 数组的初始化:两种初始化方法

静态初始化如:
int[] a = {1,2,3,4}

动态初始化如:
int[] a = new int[4];
这样初始化不赋值,得到的是默认初始化的如果是int则全是0,如果是string则全是null

​ 数组的四大基本特点:

  • 大小固定
  • 类型相同
  • 数组类型可为任意
  • 数组就是对象,可以用 “.” 调用成员

内存

Java的内存分为栈、堆、方法区

栈:

  • 存放基本变量类型,包含其值
  • 存放引用对象的变量,存的是地址

  • 存放new出来的对象与数组
  • 被所有线程共享,不会存放别的对象引用

方法区

  • 可以被所有线程共享
  • 包含了所有static、class变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值