初识Java

目录:

1.数据类型

2.数据输入

3.方法

4.数组

5.二维数组

序言:

与学习其他计算机语言一样,都是从它的语法形式开始学习的,Java与C语言有所相同也有所不同,接下来我就将Java与C类比着介绍一下Java的一些简单语法。( 声明:我使用的Java集成开发环境是idea)

正文:

1.数据类型:

 不管在什么系统,Java中的数据类型占用的字节数都是一定的,这就体现了Java语言可移植性强的优点,这便体现了那句口号:“Write once,run anywhere”

在变量初始化的时候,Java也和C语言不同:

在Java中,如果一个变量没有初始化,那么在编译时会报错,不会有默认值。例:

 

 如果进行变量赋值的时候,字面值超过了取值范围,也会报错(int 类型的取值范围是-21474836482147483647)。例:

在Java中浮点数的储存方式与C与语言一样,所以并不能精确地表示每一位,如以下例子可直观看出。

 在Java中,整数的默认类型是int, 小数的默认类型是double,在进行变量赋值的时候要注意在数字后加一个f或F来表示它是什么类型的变量,否则编译器会报错。例:

 强制类型转换在编译层面不会报错,但它是有风险的,尽量不要从大范围类型的数强转成小类型的数,可能会产生数据丢失。例:

 

0是假,非0是真这句话在Java中不适用,boolean类型只有两个值——true和false。

以下这种代码在Java中就是错误代码,括号中必须是布尔表达式。

        int a = 0;
        if (a) {
            System.out.println(a);
        }

下面的代码出现错误的原因是数据类型低于四个字节时,在运算时会提升为4个字节,详细点来说就是a和b在运算的时候会提升成四个字节,相加后的结果就是一个四个字节的数,而byte的字节大小为1,所以会出现不兼容的警告出现。这就体现了Java代码的严谨性。

使用“ + ”可以对字符串进行拼接,并且字符串没有所谓的“ \0 ”结尾的说法!

2.常用的数据输入:

整数类型 (int, long, short, byte):

  • 使用 Scanner 类的 nextInt() 方法来输入整数。
  • 如果需要输入长整型 (long),则可以使用 nextLong() 方法。
  • 如果需要输入短整型 (short),则可以使用 nextShort() 方法。
  • 如果需要输入字节 (byte),则可以使用 nextByte() 方法。
Scanner scanner = new Scanner(System.in);
int intValue = scanner.nextInt();
long longValue = scanner.nextLong();
short shortValue = scanner.nextShort();
byte byteValue = scanner.nextByte();

浮点类型 (float, double):

  • 使用 Scanner 类的 nextFloat() 方法来输入单精度浮点数。
  • 使用 nextDouble() 方法来输入双精度浮点数。
Scanner scanner = new Scanner(System.in);
float floatValue = scanner.nextFloat();
double doubleValue = scanner.nextDouble();

字符类型 (char):

  • 使用 Scanner 类的 next().charAt(0) 方法来输入一个字符。

解释:

  1. scanner.next() 从标准输入中读取下一个字符串。
  2. charAt(1) 获取这个字符串的第二个字符。在Java中,字符串的索引是从0开始的,所以charAt(0)表示第一个字符,charAt(1)表示第二个字符,以此类推。
Scanner scanner = new Scanner(System.in);
char charValue = scanner.next().charAt(0);

 值得注意的是,Scanner 对象在执行 next() 方法时会等待用户输入一个完整的标记(通常以空格、换行符或制表符分隔),然后将其作为字符串返回。因此,当你连续两次调用 next() 方法时,程序会等待两次用户的输入,而不会像你期望的那样,直接从第一次输入中获取两个字符。

想以下输入方法就可以从第一次输入中获取两个字符。

字符串类型 (String):

  • 使用 Scanner 类的 next() 或 nextLine() 方法来输入字符串。next() 方法会读取到下一个空白符(空格、制表符、换行符等)之前的内容,而 nextLine() 方法会读取一整行的内容。
Scanner scanner = new Scanner(System.in);
String stringValue = scanner.nextLine(); // 或者使用 scanner.next()

 布尔类型(boolean):

布尔类型的输入就相对麻烦,基本的思路就是输入一个字符串然后将他转换成布尔类型。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("请输入布尔值(true 或 false):");
        String input = scanner.next();
        
        boolean boolValue;
        if (input.equalsIgnoreCase("true")) {
            boolValue = true;
        } else if (input.equalsIgnoreCase("false")) {
            boolValue = false;
        } else {
            System.out.println("输入的不是有效的布尔值!");
            return;
        }
        
        System.out.println("输入的布尔值为: " + boolValue);
    }
}

equalsIgnoreCase() 是 Java 中的一个字符串比较方法,用于比较两个字符串的内容是否相等,而且不区分大小写。

在这个示例中,input.equalsIgnoreCase("true") 表示将用户输入的字符串 input 与字符串 "true" 进行比较,如果它们的内容相等(不区分大小写),则返回 true,否则返回 false。这个方法在比较时会忽略字符串的大小写差异,因此无论用户输入的是 "true" 还是 "TRUE" 或 "TrUe",都会被视为相等。

在前面的示例中,这个方法被用来判断用户输入的字符串是否等于 "true",如果是,则将布尔变量设置为 true,否则继续判断是否等于 "false"。

在Java中实现多组输入:

Ctrl键 + “ z ”结束输入。

Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()) {
            int a = sc.nextInt();
            //.......
        }

3.方法:

在学习方法的时候可以类比着C语言中的函数来理解,方法也是一段实现特定功能的代码,它可以被重复使用,大大地降低了代码量,从而加快了开发效率。

接下来我就来介绍Java中的方法如何定义以及注意事项:

定义一个方法的语法:

注意方法名一般采用小驼峰命名。

修饰符 + 返回值类型 + 方法名 + (形式参数列表) {
            方法体;
}

在Java中,我们是拿不到栈上的局部变量的地址的,所以不存在通过传指针来改变实参的值的,所以以下写法是错误的:

且形参的改变不会改变实参的值:

方法的重载:

应用场景:

当我们需要写一个方法打印两个数的和的时候,可能会因为数据类型不同而需要写多个方法,当我们使用时还需要看各个方法的名字来调用,非常麻烦,所以就有了方法的重载。

使用方法重载后的效果:

可以发现并没有出现编译错误的提醒,这就大大便利了方法的调用。

 

发生方法重载的条件: 

1. 方法名一样;

2. 参数列表不一样(参数个数 / 参数顺序 / 参数类型);

3. 返回值不做要求(与返回值无关)。

在Java中也是存在递归的,这里并不详细讲解,

大概说一下解决递归的两大步骤:

1. 有个递推公式(难点);

2. 找到当前问题的递归“结束条件”。

4.数组:

数组可以看成是相同类型元素的集合,在内存中是一段连续空间。

数组的定义:

//1和2没有区别。

//1. 
int[] array = {1, 2, 3};

//2.
int[] array = new int[]{1, 2, 3};

//3这种定义并没有初始化元素的值,默认全为其类型对应的“0”值。
//3. 
int[] array = new int[10];

//4. 
int array[] = {1, 2, 3};//不建议这样写

错误写法1:

错误写法2: 

定义一个数组: 

int[] array = {1, 2, 3, 4, 5};

array叫做引用变量,它里面储存的是地址。  

 

 在内存中它的储存形式是这样的:

0x99是首元素的地址。

如果数组没有被初始化,数组中的元素默认为其类型对应的“0”值(boolean类型的默认“0”值为“false”)。

如果数组中储存的元素为引用型,默认值为null。

遍历数组的三种方法:

1. for循环

int[] array = new int[]{1,2,3,4,5};
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

 

2.toString方法

使用Arrays的toString方法,把传入的参数array表示的数组以字符串的形式进行输出。

int[] array = new int[]{1,2,3,4,5};
        System.out.println(Arrays.toString(array));

 

3.for each循环

缺点:无法获取对应元素的下标。

int[] array = new int[]{1,2,3,4,5};
        for (int x:
             array) {
            System.out.println(x);
        }

 5.二维数组:

二维数组其实就是特殊的一维数组。

二维数组的定义:

//1.
int[][] array = {{1,2,3},{4,5,6}};

//2.
int[][] array = new int[][]{{1,2,3},{4,5,6}};

//3.
int[][] array = new int[2][3];//默认元素都是0

//4.
int[][] array = new int[2][];//不规则二维数组,在Java中,二维数组是不能够省略的。

 

其实我们在学习二维数组的时候可以将其认为是特殊的一维数组;

举个例子,一维数组在内存中的储存方式是:

 

二维数组在内存中的储存方式是:

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值