Java基础(1)

本文介绍了Java的基础知识,包括常量的声明与赋值规则,如final关键字的使用,浮点数的表示,以及驼峰式命名法。详细讲解了Java的数据类型,如整型、浮点型、字符型和布尔型,以及它们之间的自动类型转换和强制类型转换。此外,还探讨了数组的声明、创建、初始化、长度获取及元素访问。最后,文章展示了如何进行基本的数组操作,包括一维和二维数组的声明和使用。
摘要由CSDN通过智能技术生成

Java基础(1)

在自学java基础的道路上从入门到入土的一只小萌新。。。本系列不定期更新,有不足和错误欢迎各位大佬指正hhh

常量

· 常量的声明:final int a = 2;

· 浮点数:float x = 3.14F(3.14f); // 结尾加f/F

· 常量支持同时赋值:final int a = 4,b = 5,c = 6;

· 在常量已被声明的同时赋值后,再次执行修改其值的代码将报错

final int YOUTH_AGE = 16;
YOUTH_AGE = 18;  // 此时会报错

· 在定义变量标识符时,按照java的命名规则,第一个单词的首字母小写,其他单词首字母大写。

String name = "ABC";
int partyMemberAge = 26;  // 驼峰式命名法(然而其实本人更习惯下划线命名(?)hhh)

· 变量的值允许被改变。

java的数据类型

整型

· 字节型(byte):1字节,-128~127

· 短整型(short):2字节,-32768~32767

· 整型(int):4字节,-2147483648~2147483647

· 长整型(long):8字节,-9223372036854775808-9223372036854775807

在为长整型常量或变量赋值时,所赋的值后面需要加上一个字母L/l

· 如果所赋的值并未超过int型取值范围也可以省略字母“L”

浮点类型

· 单精度型(float):4字节,-1.4E-45~3.402823E538

· 双精度型(double):8字节,4.9E-324~1.7976931348623157E308

在为double常量或变量赋值时,所赋的值后面需要加上一个字母D/d,java默认小数为double型

字符类型:char

在为char型常量或变量赋值时,如果所赋的值为一个英文字母、一个汉字或一个符号时必须将所赋的值放在英文状态下的一对单引号内。
要注意,无论所赋的值为字母、符号还是汉字,都只能为一个字符。

char ca = 'M';
char cb = '*';
char cc = '男';

由于java会把字符当作整数,并且可以存储65536个字符,所以也可以将0~65535的整数赋值为char型常量或变量,但是在输出时得到的并不是所赋的整数。

也可以将数字0~9以字符的形式赋值给char型常量或变量。

char c = 88;
System.out.println(c);
// 输出:X
char d = '6'; // 6

关于基本输出语句:

System.out.println(); // 打印指定内容至终端并换行
System.out.print(); // 打印指定内容至终端

布尔类型:boolean

布尔值只有true和false,分别用来代表逻辑判断中的“真”和“假”,使用关键字boolean进行声明。

boolean b;
boolean b1,b2;
boolean b3 = true, b4 = false;
boolean b5 = 2 < 3, b6 = (2 == 4);
System.out.println("b5 is:" + b5);  // b5 is true
System.out.println("b6 is:" + b6);  // b6 is false

引用数据类型

引用数据类型包括类引用、接口引用和数组引用。

Object object = null; // 声明一个java.lang.Object类的引用
List list = null; // 声明一个java.util.List接口的引用
int[] months = null; // 声明一个int型数组的引用

// 声明+具体初始化
Object object = new Object();
List list = new ArrayList();
int[] months = new int[12];

基本数据类型之间的转换

自动类型转换

· 低级数据(取值范围相对较小)类型 -> 高级数据(取值范围相对较大)类型

java会自动完成从低级数据类型到高级数据类型的转换。

数据类型从低到高排序:

byte -> short -> int(char) -> long -> float -> double

分成两种情况考虑:

(1)含有int、long、float或double型的数据

java会先将表达式中所有数据类型较低的变量自动转换为表达式中数据类型最高的数据类型再进行计算,并且计算结果的数据类型,也为表达式中数据类型最高的数据类型。

举个栗子

byte b = 75;
char c = 'c';
int i = 794215;
long l = 9876543210L;
long result = b * c - i + l;

在这个式子中,java会把b、c、i转换为long型在进行计算,并且计算结果的数据是long型。

也就是说,将表达式的结果直接复制给数据类型低于long(如int)型是不被允许的。但是可以直接赋值给数据类型高于long型(如float)型的变量。

(2)含有byte、short或者char的数据

如果是这样的情况,那么java将会把所有的变量的类型转换为int型再进行计算,并且计算结果的数据类型为int型。

还是举个栗子

byte b = 75;
short s = 9412;
char c = 'c';
int result = b + s * c;

在这个式子中,java会先把所有变量的数据类型转换为int型再进行计算,并且计算结果的类型为int型。

也就是说,将表达式的结果直接复制给数据类型低于int(如char)型是不被允许的。但是可以直接赋值给数据类型高于int型(如long)型的变量。

可以将数据类型较低的数据或变量直接赋值给数据类型相对较高的变量,但是不可以将数据类型较高的数据或变量直接复制给数据类型较低的变量。

强制类型转换

如果需要解决上文的问题,就必须进行强制类型转换。

例如下面的例子,我们想要把java默认为小数类型的数据double值7.5赋值给数据类型为int的变量;将默认int型数据774赋值给byte类型的变量。

int i = (int) 7.5; // 7,精度降低
byte b = (byte) 774; // 6,溢出

从运行结果上看,说明这样做会导致数据溢出或者数据精度降低。

为什么会出现数据溢出?

十进制数的774的二进制存储形式:

00000000 00000000 00000011 00000110

前24位被舍弃,截取二进制数据流的后8位

00000110 -> (10进制中的6) 赋值给上文中的变量b

java数组

数组的声明方式

// 一维数组的声明
// 两种声明数组格式的作用相同,但是第一种方式更符合原理,后一种方式更符合原始编程习惯
int[] months;
boolean members[];

// 二维数组的声明
int[][] days;
boolean holidays[][];

数组的创建

创建数组实际上就是在内存中为数组分配相应的存储空间。

int[] months = new int[12];
int[][] days = new int[2][3]; // 可以将二维数组看作一个表格,索引从0开始

数组的初始化

int boy[] = {2,45,36,7,69};
boolean holidays[][] = {{true,false,true},
                        {false,true,false}};

数组的长度获取与元素的访问

元素的个数称为数组的长度。

对于一维数组来说,“数组名.length”的值就是数组中元素的个数;对于二维数组,“数组名.length”的值是它含有的一维数组的个数。

int[] months = new int[12];
boolean[] members = {false,true,true,false};
int[][] days = new int[2][3];
boolean holidays[][] = {{true,false,true},
                        {false,true,false}};

// 一维数组长度的获取
System.out.println(months.length); // 12
System.out.println(members.length); // 4

// 二维数组行数
System.out.println(days.length); // 2
System.out.println(holidays.length); // 2

// 二维数组列数
System.out.println(days[0].length); // 3
System.out.println(holidays[0].length); // 3

// 通过{}创建的数组,数组中每一行列数可以不相同
boolean holidays_1[][] = {{true,false,true},
                          {false,true,},
                          {true,false,true,false}};

System.out.println(holidays_1[0].length);  // 3
System.out.println(holidays_1[1].length);  // 2
System.out.println(holidays_1[2].length);  // 4

// 数组元素的访问
System.out.println(members[1]); // true
System.out.println(holidays_1[1][0]); // false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值