Java基础语法:变量和运算符
1. 关键字
定义:被Java语言赋予了特殊含义,用做专门用途的单词 特点:关键字中所有字母都为小写
目前我们学习接触到的关键字较少,其他的关键字后续学习过程中逐步掌握,目前不需要全部记忆。
2. 保留字
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字 goto 、const
3. 标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符 总结:凡是自己可以起名字的内容都称之为标识符。
4. 标识符命名规范
语法规定(最低标准):
可以由:字母、数字、_、$、¥ 组成,但不能以数字开头。
不能与关键字、保留字重名。
约定俗成(更高标准):
望文生义、见名知义。
类名由一个或多个单词组成,每个单词首字母大写(pascal)。
举例:学生 Student 人类 Person 订单信息 :OrderInfo
方法名、变量名由一个或多个单词组成,首单词全部小写,拼接词首字母大写(camel)。
举例:学生姓名 studentNameAndInfo
包名全小写,只可以使用特殊字符".",并且不以"."开头或结尾。
举例: com.atguigu.xxx
常量全大写,多个单词用 _ 连接。
举例:国家名称 COUNTRY_NAME
java
public class A{
}
class 2B1{ // 这种命名会报错 数字不能开头
}
class $C{
}
class ¥D{
}
class 一个类{
}
5. 变量和数据类型概念
概念:计算机内存中的一块存储空间,是存储数据的基本单元。
生活中我们通常需要记录数据,在程序中亦是如此,生活中我们通过各种途径:图片,音频,视频,文字等方式记录数据,在程序中使用变
量记录数据。
举例:比如你的同桌需要大宝剑,发现前不够,找你借5毛钱。
时间:2025年3月29日09:35:35
事件:借钱
人物:你的同桌
地点:教室
金额:5毛 / 0.5元
......
记录数据涉及到不同的数据类型,Java语言也提供了对应的类型来存储不同类型的数据。
6. 变量的定义方式
声明变量的3种方式: 先声明,再赋值:【常用】 数据类型 变量名; 变量名 = 值;
声明并赋值:【常用】 数据类型 变量名 = 值;
多个同类型变量的声明与赋值:【了解】 数据类型 变量1 , 变量2 , 变量3 = 值3 , 变量4 , 变量5 = 值5;
java
public class TestVariableDefine{
public static void main(String [] args){
// 变量的定义方式
// 方式1 先声明 再赋值
int a;
a = 100;
// 字符串(英文双引号包括起来的内容都属于字符串)
// 字符串与任何内容相加 实为拼接 不做数学计算
System.out.println("变量a的取值为:" + a);
// 方式2 连声明带赋值写为一条语句
int b = 200;
System.out.println("变量b的取值为:" + b);
// 方式3 同时声明多个同类型的变量
int c , d , e = 55 , f , g = 66;
System.out.println("变量e的取值为:" + e);
System.out.println("变量g的取值为:" + g);
// 未赋值的局部变量 LocalVariable 不能使用 因为没有默认值
System.out.println("变量c的取值为:" + c);
System.out.println("变量d的取值为:" + d);
System.out.println("变量f的取值为:" + f);
}
}
7. 单位换算
1TB = 1024GB
1GB = 1024MB
1MB= 1024KB
1KB = 1024Byte(字节)
1Byte = 8bit(位)
一个字节占8位,即一个字节在内存中占8个小格子,每一个小格子只能存储一个0或者一个1,这个小格子我们称之为:位
8. 基本数据类型
8.1 整数类型
徽标 + CALC 呼出系统自带的计算器
java
public class TestNumberDefine{
public static void main(String [] args){
// 整数类型
// byte 类型 1个字节 取值范围 -128 ~ 127
byte b1 = -20;
byte b2 = 127;
// byte b3 = 128; 超出范围 无法存放
System.out.println("变量b1的取值为:" + b1);
System.out.println("变量b2的取值为:" + b2);
// System.out.println("变量b3的取值为:" + b3);
// short 类型 2个字节 取值范围 -32768 ~ 32767
short s1 = 12345;
short s2 = -12345;
System.out.println("变量s1的取值为:" + s1);
System.out.println("变量s2的取值为:" + s2);
// short s3 = -32769;
// short s4 = 32768;
// int类型 4个字节 取值范围 -2147483648 ~ 2147483647
int i1 = 45678;
int i2 = -789454;
System.out.println("变量i1的取值为:" + i1);
System.out.println("变量i2的取值为:" + i2);
// int i3 = -2147483649;
// int i4 = 2147483648;
// long 8个字节 取值范围 -9223372036854775808 ~ 9223372036854775807
System.out.println("long类型最大值:" + Long.MAX_VALUE);
System.out.println("long类型最小值:" + Long.MIN_VALUE);
long l1 = 5689;
long l2 = -78945;
System.out.println("变量l1的取值为:" + l1);
System.out.println("变量l2的取值为:" + l2);
// 给long类型赋值 如果取值范围超出int 则值的末尾必须追加 L 大小写都可以 推荐大写
// 如果取值范围没有超出int 则L可加可不加
// 当我们使用long类型存储数据 默认依然使用四个字节帮我们进行保存
// 这个操作属于JVM帮我们实现的内存优化 所以一旦超出int取值范围 会报错
// 如果希望JVM使用8个字节存储数据 则必须 显式 加上L
long l3 = 2147483648L;
System.out.println("变量l3的取值为:" + l3);
}
}
8.2 浮点类型
注意:double为浮点数的默认类型,如需为float类型赋值,需要在值的后面追加"F" float和double都属于近似值 不是精确值(无法表示精确值) 根据有效位决定 float有效位是6~7位数值 double有效位是15 ~ 16位数值
如果需要保存金钱,或者其他对精度有要求的数据,后续我们会学习BigDecimal
java
public class TestFloatAndDouble{
public static void main(String [] args){
// float 4个字节 取值范围 -3.4E38 ~ 3.4E38
float minValue = -340000000000000000000000000000000000000F;
System.out.println("float最小取值:" + minValue);
float maxValue = 340000000000000000000000000000000000000F;
System.out.println("float最大取值:" + maxValue);
double d1 = 2.5;
double d2 = 3.6;
System.out.println(d1);
System.out.println(d2);
double d3 = 20;
System.out.println(d3);
// 当直接赋值整数 取值范围超出int 则必须在值的末尾追加 D 推荐大写
double d4 = 2147483648D;
System.out.println(d4);
}
}
8.3 布尔类型
可直接赋值true / false
也可赋值一个结果为true / false的表达式
注意:Java中的boolean不能参与算数运算
java
public class TestBooolean{
public static void main(String [] args){
// 布尔类型 boolean 1个字节 true / false
boolean bl1 = true;
boolean bl2 = false;
System.out.println(bl1);
System.out.println(bl2);
int a = 10;
int b = 20;
boolean bl3 = a > b;
System.out.println(bl3);
}
}
8.4 字符类型
字符赋值:char c1 = 'A';(通过''描述为字符赋值)
整数赋值:char c2 = 65;(通过十进制数65在字符集中对应的字符赋值)
进制赋值:char c3 = '\u0041';(通过十六进制数41在字符集中所对应的字符赋值)
编码表:
ASCII码表 美国标准信息交换码
Unicode编码表 万国码
java
public class TestChar{
public static void main(String [] args){
// char类型 2个字节 取值范围 0 ~ 65535
// 三种赋值方式
// 方式1 直接使用英文单引号包括任意一个字符
char ch1 = 'a';
char ch2 = '中';
char ch3 = '_';
char ch4 = '1';
char ch5 = '?';
System.out.println(ch1);
System.out.println(ch2);
System.out.println(ch3);
System.out.println(ch4);
System.out.println(ch5);
System.out.println("-----------------------------------------");
// 方式2 直接赋值取值范围在0~65535以内的任意整数
// 当我们直接赋值整数 取值范围在0~127以内 将参考ASCII码表 映射为对应的字符
char c1 = 65; // A
char c3 = 66; // B
char c4 = 67; // C
char c2 = 97; // a
System.out.println(c1);
System.out.println(c3);
System.out.println(c4);
System.out.println(c2);
// 当我们直接赋值整数 取值范围超出 0~127 将参考Unicode编码表
// Unicode编码表 万国码 收录了世界上个各个国家文字 字符
// 是一个十六进制的编码表 0000 ~ FFFF
// 中文的取值范围: 4E00(19968) ~ 9FA5(40869)
char c5 = 20013;
System.out.println(c5);
char c6 = 20320;
System.out.println(c6);
char c7 = 19968;
System.out.println(c7);
char c8 = 40869;
System.out.println(c8);
System.out.println("-----------------------------------------");
// 方式3 直接使用英文的单引号包括 Unicode字符集的值 必须以 杠u 开头
char cc1 = '\u4E00';
char cc2 = '\u4E2D';
char cc3 = '\u4F59';
System.out.println(cc1);
System.out.println(cc2);
System.out.println(cc3);
// 使用十六进制 再转换为二进制
System.out.println((char)0B0110001000010001);
System.out.println((char)0B0111001000110001);
System.out.println((char)0B0100111101100000);
}
}
9.String类型(引用数据类型)
字符串与任何内容相加,不做数学计算,作拼接处理。
java
public class TestString{
public static void main(String [] args){
// String类型 任何英文双引号之间的内容都属于字符串(对象)
String s1 = "abc";
String s2 = "世界你好 66666 hello world";
String s3 = " 魏文强额温枪 额外企鹅 分我让人王企鹅请问二维请问饿";
System.out.println(s1 + s2);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
10. 转义字符
转义字符是为了保存一些特殊符号或者实现一些特殊的效果
java
public class TestConvertSign{
public static void main(String [] args){
// 转义字符
char ch1 = '\'';
System.out.println(ch1);
// \n 换行
System.out.println("a\nb\nc\nd\ne\nf\ng");
// \t 制表符 制表位 用于上下行文本对齐
System.out.println("床\t前\t明\t月\t光");
System.out.println("疑\t是\t地\t上\t霜");
// \\ 保存一个\ 需要写两个
char ch2 = '\\';
System.out.println(ch2);
// \" 保存在char类型中 可以不必转义
char ch3 = '"';
System.out.println(ch3);
String s1 = " a \" \" z ";
System.out.println(s1);
}
}
11. 类型转换
11.1 自动类型转换
自动类型转换 两种类型相互兼容。(6种数值类型和char类型兼容) 目标类型(等号左边)取值范围大于源类型(等号右边)取值范围。 byte < short < int < long < float < double char < int < long < float < double char转换为byte 或者 char转换为short都不能自动类型转换 必须强转
java
public class TestAutoConvert{
public static void main(String [] args){
// 自动类型转换
// 两种类型相互兼容。(6种数值类型和char类型兼容)
// 目标类型(等号左边)取值范围大于源类型(等号右边)取值范围。
// byte < short < int < long < float < double
// char < int < long < float < double
// char转换为byte 或者 char转换为short都不能自动类型转换 必须强转
byte b1 = 100;
short s1 = b1;
System.out.println(s1);
System.out.println("***************************");
short s2 = 2356;
int i1 = s2;
System.out.println(i1);
System.out.println("***************************");
int i2 = 5566;
long l1 = i2;
System.out.println(l1);
System.out.println("***************************");
long l2 = 564578L;
float f1 = l2;
System.out.println(f1);
System.out.println("***************************");
float f2 = 3.5F;
double d1 = f2;
System.out.println(d1);
System.out.println("***************************");
char c1 = 'A'; // 65
int a = c1;
long b = c1;
float c = c1;
double d = c1;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
11.2 强制类型转换
强制类型转换 两种类型相互兼容。(6种数值类型和char类型兼容) 目标类型(等号左边)取值范围小于源类型(等号右边)取值范围。
double > float > long > int > short > byte double > float > long > int > char short > char byte > char
java
public class TestForceConvert{
public static void main(String [] args){
// 强制类型转换
// 两种类型相互兼容。(6种数值类型和char类型兼容)
// 目标类型(等号左边)取值范围小于源类型(等号右边)取值范围。
// double > float > long > int > short > byte
// double > float > long > int > char
// short > char
// byte > char
double d1 = 2.5;
float f1 = (float)d1;
System.out.println(f1);
System.out.println("---------------------------------------");
float f2 = 3.6F;
long l1 = (long)f2;
System.out.println(l1);
System.out.println("---------------------------------------");
long l2 = 100;
int i1 = (int)l2;
System.out.println(i1);
System.out.println("---------------------------------------");
int i2 = 100;
short s1 = (short)i2;
System.out.println(s1);
System.out.println("---------------------------------------");
short s2 = 100;
byte b2 = (byte)s2;
System.out.println(b2);
System.out.println("---------------------------------------");
double a = 65.5;
float b = 65.5F;
long c = 65;
int d = 65;
char c1 = (char)a;
System.out.println(c1);
char c2 = (char)b;
System.out.println(c2);
char c3 = (char)c;
System.out.println(c3);
char c4 = (char)d;
System.out.println(c4);
System.out.println("---------------------------------------");
short sho1 = 65;
byte by1 = 65;
char cc1 = (char)sho1;
System.out.println(cc1);
char cc2 = (char)by1;
System.out.println(cc2);
}
}