一、Java基础之二——基础语法(一)

本文详细讲解了Java编程中的注释技巧、关键字用法,涵盖数据类型(包括基本类型、转换规则和运算符)以及常量和变量的管理,还介绍了计算机数据存储的基本概念和进制转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、注释(annotation)

对代码的及时和说明,不影响程序编译和运行

//单行注释内容

/*
多行注释内容
*/

/**
文档注释内容
*/

2、关键字(keyword)

Java定义好的单词,有特殊含义,全部都是小写字母
1、关键字一共50个,其中const和goto是保留字。
2.、true,false,null看起来像关键字,但从技术角度,它们是特殊的布尔值和空值。

关键字表
关键字表

3、标识符(identifier)

3.1 命名规则

  • 只能使用26个英文字母大小写,0-9数字,下划线_,美元符号$
  • 数字不能开头,不能包含空格,不能使用关键字,保留字和特殊值
  • 严格区分大小写

3.2 命名规范

  • 类名、接口名:每个单词首字母大写,形如:XxxYyyZzz
  • 变量名、方法名:从第二个单词开始首字母大写,其余小写,形如:xxxYyyZzz
  • 包名:每个单词都小写,单词间用点分割,形如:xxx.yyy.zzz
  • 常量名:每个单词大写,单词间用下划线分割,形如:XXX_YYY_ZZZ

4、数据类型(Data Type)

4.1 数据类型分类

  • 基本数据类型:整数,浮点数,字符,布尔。
  • 引用数据类型:类,数组,接口。String是引用类型

4.2 基本数据类型

  • Java中默认类型:整数类型是int,浮点类型是double
  • float精度:科学计数法的小数后6-7位
  • double精度:科学计数法的小数点后15-16位
    在这里插入图片描述

4.3 数据类型转换

4.3.1 自动类型转换(隐式类型转换)
  • 将取值范围小类型自动提升为取值范围大的类型
  • 转换规则如下
    在这里插入图片描述
  • 自动类型转换的场景
/*
	(1) 当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时
*/
int i = 'A';//char自动升级为int
double d = 10;//int自动升级为double
//float f = 2.1;//错误,右边默认是double,不能直接赋值给float
float f1 = 2.1f;//正确
float f1 = (float)2.1;//正确,强制类型转换

byte b = 127; //右边的整数常量值必须在-128~127范围内
//byte bigB = 130;//错误,右边的整数常量值超过byte范围
long num = 1234567; //右边的整数常量值如果在int范围呢,编译和运行都可以通过,这里涉及到数据类型转换
long bigNum = 12345678912L;//右边的整数常量值如果超过int范围,必须加L,否则编译不通过

/*
	(2)当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算
*/
int i = 1;
byte b = 1;
double d = 1.0;

double sum = i + b + d;//混合运算,升级为double

/*
	(3)当byte,short,char数据类型进行算术运算时,按照int类型处理
*/
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为int

char c1 = '0';
char c2 = 'A';
System.out.println(c1 + c2);//113 
4.3.2 强制类型转换(显式类型转换)
  • 将取值范围大类型强制转换成为取值范围小的类型
  • 强制类型转换的场景
/*
	(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出
*/
int i = (int)3.14;//强制类型转换,损失精度

double d = 1.2;
int num = (int)d;//损失精度

int i = 200;
byte b = (byte)i;//溢出

/*
	(2)当某个值想要提升数据类型时,也可以使用强制类型转换
*/
int i = 1;
int j = 2;
double shang = (double)i/j;
4.3.3 特殊的数据类型转换
/*
	(1)任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型
*/
System.out.println("" + 1 + 2);//12

/*
	(2)String类型不能通过强制类型()转换,转为其他的类型
*/
String str = "123";
int num = (int)str;//错误的
int num = Integer.parseInt(str);//后面才能讲到,借助包装类的方法才能转

4.4 运算符(Operator)

  • 按功能分:算术运算符、赋值运算符、比较运算符、逻辑运算、条件运算符…
  • 操作数个数分:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)
分类运算符
算术运算符+-*/%++--
赋值运算符=+=-=*=/=%=
关系运算符>>=<<===!=
逻辑运算符&、`
条件运算符(条件表达式)?结果1:结果2;
位运算符(了解)&、`
4.4.1 算术运算符
算术运算符符号解释
+加法运算,字符串连接运算,正号
-减法运算,负号
*乘法运算
/除法运算,整数/整数结果还是整数
%求余运算,余数的符号只看被除数
++--自增自减运算
/*
	加减乘除、取模
*/
int a = 3;
int b = 4;

System.out.println(a + b);// 7
System.out.println(a - b);// -1
System.out.println(a * b);// 12
System.out.println(a / b);// 0
System.out.println(3.0 / 4.0);// 0.75
System.out.println(a % b);// 3

System.out.println(5%2);//1
System.out.println(5%-2);//1
System.out.println(-5%2);//-1
System.out.println(-5%-2);//-1		
//商*除数 + 余数 = 被除数
//5%-2  ==>商是-2,余数时1    (-2)*(-2)+1 = 5
//-5%2  ==>商是-2,余数是-1   (-2)*2+(-1) = -4-1=-5

/*
	"+"号的用法
*/
System.out.println("Hello" + "World"); // HelloWorld
String str2 = "Java";
// String + int --> String
System.out.println(str2 + 520); // Java520
System.out.println(str2 + 5 + 20); // Java520
4.4.2 自加和自减
  • ++在前,先自加,后使用
  • ++在后,先使用,后自加。
/*
	(1)变量在单独运算的时候,变量 前++ 和变量 后++ ,变量的是一样的
*/
// 定义一个int类型的变量a
int a = 3;
//++a;
a++;
// 无论是变量前++还是变量后++,结果都是4
System.out.println(a);


/*
	(2)和其他变量放在一起使用或者和输出语句放在一起使用,前++ 和 后++ 就产生了不同
		变量 前++ :变量先自身加1,然后再取值
		变量 后++ :变量先取值,然后再自身加1
*/
int x = 3;
//int y = ++x; // y的值是4,x的值是4
int y = x++; // y的值是3,x的值是4

// 和输出语句一起
int z = 5;
//System.out.println(++z);// 输出结果是6,z的值也是6
System.out.println(z++);// 输出结果是5,z的值是6


int a = 1;
a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1

int i = 1;
int j = i++ + ++i * i++;
/*
从左往右加载
(1)先算i++
①取i的值“1”放操作数栈
②i再自增 i=2
(2)再算++i
①i先自增 i=3
②再取i的值“3”放操作数栈
(3)再算i++
①取i的值“3”放操作数栈
②i再自增 i=4
(4)先算乘法
用操作数栈中3 * 3 = 9,并把9压入操作数栈
(5)再算求和
用操作数栈中的 1 + 9 = 10
(6)最后算赋值
j = 10
*/

练习

int i = 1;
int j = i++;//j=1,i=2
int k = i++ * ++j + ++i * j++;
//i++ * ++j = 2 * 2;//i=3,j=2
//++i * j++ = 4 * 2;//i=4,j=3
//k = 4+8=12;//i=4,j=3

System.out.println("i = " + i);
System.out.println("j = " + j);
System.out.println("k = " + k);
4.4.3 赋值运算符

所有的赋值运算符的=左边一定是一个变量

赋值运算符符号解释
=将符号右边的值,赋值给左边的变量
+=将符号左边的值右边的值进行相加操作,最后将结果赋值给左边的变量
-=将符号左边的值右边的值进行相减操作,最后将结果赋值给左边的变量
*=将符号左边的值右边的值进行相乘操作,最后将结果赋值给左边的变量
/=将符号左边的值右边的值进行相除操作,最后将结果赋值给左边的变量
%=将符号左边的值右边的值进行取余操作,最后将结果赋值给左边的变量
4.4.4 关系运算符/比较运算符
  • 比较运算符,是两个数据之间进行比较的运算,运算结果一定是boolean值true或者false
  • 其中>,<,>=,<=不支持boolean,String类型,==和!=支持boolean和String。
关系运算符符号解释
<比较符号左边的数据是否小于右边的数据,如果小于结果是true。
>比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<=比较符号左边的数据是否小于或者等于右边的数据,如果大于结果是false。
>=比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是false。
==比较符号两边数据是否相等,相等结果是true。
!=不等于符号 ,如果符号两边的数据不相等,结果是true。
4.4.5 逻辑运算符

逻辑运算符,是用来连接两个布尔类型结果的运算符(!除外),运算结果一定是boolean值true或者false

逻辑运算符符号解释符号特点
&与,且falsefalse
``
^异或相同为false,不同为true
!falsetrue,非truefalse
&&双与,短路与左边为false,则右边就不看
``
4.4.6 条件运算符
//条件表达式?结果1:结果2
 int i = (1==2 ? 100 : 200);
System.out.println(i);//200
int j = (3<=4 ? 500 : 600);
System.out.println(j);//500
4.4.7 位运算符
  • 左移<<:<<左移几位就相当于乘以2的几次方
  • 右移>>:>>右移几位就相当于除以2的几次方
  • 无符号右移:往右移动后,左边空出来的位直接补0,不看符号位
位运算符符号解释
&按位与,当两位相同时为1时才返回1
``
~按位非,将操作数的每个位(包括符号位)全部取反
^按位异或。当两位相同时返回0,不同时返回1
<<左移运算符
>>右移运算符
>>>无符号右移运算符
public class TestOne {
    public static void main(String[] args) {
        System.out.println("十进制:"+(-10)+"\n二进制补码字符串:\n"+Integer.toBinaryString(-10));
        System.out.println("负数的右移:"+(-10>>3)+"\n负数的右移二进制补码字符串:\n"+Integer.toBinaryString(-10>>3));
        System.out.println("负数的无符号右移:"+(-10>>>3)+"\n负数的无符号右移二进制补码字符串:\n"+Integer.toBinaryString(-10>>>3));
    }
}

/*
	结果
十进制:-10
二进制补码字符串:
11111111111111111111111111110110
负数的右移:-2
负数的右移二进制补码字符串:
11111111111111111111111111111110
负数的无符号右移:536870910
负数的无符号右移二进制补码字符串:
11111111111111111111111111110
*/
4.4.8 运算符优先级

在这里插入图片描述

5、常量(Constant)和变量(Variable

5.1 常量

  • 常量:包括字面常量和自定义常量。程序执行过程中,值不发生变化的量。可通过final自定义常量。
    常量池

5.2 变量

  • 变量要注意的地方
    1. 先声明后使用,不然会报找不到符号错误
    2. 使用前初始化,不然会报初始化错误
    3. 有作用域,超过作用域,会报找不到符号错误
    4. long类型:如果赋值的常量整数超过int范围,需要在数字后面加L或l
    5. float类型:如果赋值为常量小数,那么需要在小数后面加F或f
    6. char和String:char使用单引号’',String使用双引号""

补充知识:计算机存储数据

计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。

数据存储最小单位是位(bit),也就是二进制,二进制系统中,每个0或1就是一位,叫做bit(比特),8bits称为一个字节(Byte)。字节是计算机信息基础中用于计量存储容量的一种计量单位,一字节等于八位。

  • 8 bit = 1 Byte
  • 1024 Byte = 1 KB
  • 1024 KB = 1 MB
  • 1024 MB = 1 GB
  • 1024 GB = 1 TB

1、进制分类

  • 十进制:0-9,逢十进一
  • 二进制:0-1,逢二进一
  • 八进制:0-7,逢八进一,每三位二进制是一位八进制值
  • 十六进制:0-9,a-f/A-F,不区分大小写,每四位二进制是一位十六进制值

2、进制换算

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012a或A
11101113b或B
12110014c或C
13110115d或D
14111016e或E
15111117f或F
16100002010
2.1 十进制转二进制:除以2倒取余数,直到商为0

在这里插入图片描述

2.2 二进制转十进制:从右往左一次是2的0次,2的1次,2的2次…

在这里插入图片描述

2.3 二进制转八进制:从右往左,每三位转换成一位八进制值,不够三位补0

在这里插入图片描述

2.4 二进制转十六进制:从右往左,每四位转换成一位八进制值,不够三位补0

在这里插入图片描述

3、代码四种进制表示

//十进制:正常表示
System.out.println(10);
//二进制:0b或0B开头
System.out.println(0B10);
//八进制:o或O开头
System.out.println(010);
//十六进制:0x或0X开头
System.out.println(0X10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个猫崽子和你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值