作者 :余小小
日期:2022年8月30日
-
标识符(重点)
-
关键字(重点)
-
修饰符(重点)
-
数据类型(重点)
-
数据类型的转换(难点)
-
变量的定义和修改(难点)
注意事项
-
大小写区分敏感
-
标识符需要注意:非数字开头,由可以字母和下划线组成
-
方法名应该遵守小驼峰命名法则,类名应该遵守大驼峰法则。
-
源文件名字应该和类名一样
-
禁止使用中文作为任何标识符
-
小驼峰:第一个单词的首字母小写,后面的单词的首字母全部大写。例如:helloWord
-
大驼峰:每一个单词的首字母都大写,例如:HelloWorld,需要注意的是在前端的JS中构造函数用的是大驼峰式写法。
开发规范
-
变量、成员、方法名统一采用小驼峰命名,做到见名字知其义,比如:userName,passWorld
-
类名的定义:普通类名采用大驼峰,抽象类采用Abstract或Base开头。例如普通类:User,HelloWorld,例如抽象类:AbstractUser,AbstractLove
-
包名、异常、方法名称的定义:包名一律采用全小写,异常都采用_Exception结尾; 方法名称需要根据方法功能采用如插入insert-User。
注释
注释是对代码的解释和说明文字,可以提高程序的可读性,Java中的注释分为三种:
-
单行注释。常用于变量
//这里是一个注释
-
多行注释:常用于表示更多的步骤
/* 这里是一个注释 */
-
文档注释:常用在类上或者方法上
/** 这里是一个注释*/。
关于文档注释,我们可以在eclipse中可以直观的查看到javadoc的相关显示。比如我这里的文档注释是在一个类上
/**
* 判断学生是不是成年人
*
* @author 余小小
* @date 2022年8月30日
* @package
*/
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
if (age>=18) {
System.out.println("成年人了哦");
}
// 写法二 不用花括号
if (age<18)
System.out.println("不是成年人");
}
}
如果你的eclipse窗口中没有javadoc窗口,可以按照我给的方式来进行查看:
标识符
-
所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
-
首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
-
关键字不能用作标识符
-
标识符是大小写敏感的
-
合法标识符举例:age、$salary、_value、__1_value
-
非法标识符举例:123abc、-salary
关键字
-
关键字是指被java语言赋予了特殊含义的单词。
-
关键字的字母全部小写。
修饰符
访问控制修饰符(权限修饰符) :
-
default(默认)
-
public (公共)
-
protected(保护)
-
private(私有)
非访问控制修饰符 :
-
final(最终)
-
abstract(抽象)
-
static(静态)
-
synchronized(同步)
认识常量和变量
-
常量:在程序运行过程中,其值不可以发生改变的量。
-
变量:在程序运行过程中,其值可以发生改变的量。
常量一般用全大写字母
变量是内存中的一小块区域,其值可以在一定范围内变化。
计算机的存储单元
计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成。
其换算单位如下:
-
1B(字节) = 8bit (位)
-
1KB = 1024B
-
1MB = 1024KB
-
1GB = 1024MB
-
1TB = 1024GB
数据类型分类
Java是一个强类型语言,Java中的数据必须明确数据类型。
-
基本数据类型:基本数据类型也叫做内置数据类型,是Java创建的时候就已经存在JDK中,并且一定固定好了的内存空间大小,方便程序员直接调用。
-
引用数据类型:在Java中,引用类型的变量非常类似于C/C++的指针。通过使用引用来明确指向内存地址,从而方便程序员操作引用数据。
基本数据类型
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | -2的31次方到2的31次方-1 | |
long | 8 | -2的63次方到2的63次方-1 | |
浮点类型 | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数: 1.401298E-45到3.402823E+38 |
double(默认) | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324 到1.797693E+308 | |
字符类型 | char | 2 | 0-65535 |
布尔类型 | boolean | 1 | true,false |
说明:
-
e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
-
在java中整数默认是int类型,浮点数默认是double类型。
代码实操,定义不同的数据类型的变量
byte b = 1;
short s = 2;
int i = 3;
long l = 4L;
float f = 1.1f;
double d = 1.22;
char c = 98;
boolean bl = true;
String str = "yxqz";
System.out.println("byte类型" + b);
System.out.println("short类型" + s);
System.out.println("int类型" + i);
System.out.println("long类型" + l);
System.out.println("float类型" + f);
System.out.println("double类型" + d);
System.out.println("boolean类型" + bl);
System.out.println("char类型" + c);
System.out.println("String类型" + str);
引用数据类型
-
String
-
enum(枚举)
-
对象(class)
不同类型的占用空间(扩展)
关于各种基本数据类型占用的空间的大小,可以使用包装类和SIZE关键字来进行计算获得
包装类在后面的章节中详细介绍
// SIZE默认单位是位 Boolean并没有Size方法,字符串使用其他工具类进行
System.out.println(Byte.SIZE/8);
System.out.println(Character.SIZE/8);
System.out.println(Integer.SIZE/8);
System.out.println(Short.SIZE/8);
System.out.println(Long.SIZE/8);
System.out.println(Float.SIZE/8);
System.out.println(Double.SIZE/8);
System.out.println("------------分割线----------------");
/**String的存储方式很动态
* 一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不同。
* 在UTF-8编码下,一个中文字符占3个字节;
* 而使用GBK编码时一个中文字符占2个字节。
*/
String str1 = "yxqz";
String str2 = "鱼香茄子";
System.out.println(str1.getBytes("utf-8").length);
System.out.println(str1.getBytes("gbk").length);
System.out.println(str2.getBytes("utf-8").length);
System.out.println(str2.getBytes("gbk").length);
变量的定义
声明并定义一个变量
格式:
数据类型 变量名 = 数据值;
-
数据类型:为空间中存储的数据加入类型限制,基本类型或者引用类型
-
变量名:变量的名字,标识符
-
数据值:相对应的数据类型的值
int age = 18;// 声明变量并赋值
System.out.println(age);
先声明后定义变量
格式:
数据类型 变量名;
变量名 = 初始化值;
在Java中默认的变量是有相对应的数据类型的初始值的。但是在变量中,是必须要自己先赋值之后才可以操作。
double money;
money = 99.8;
System.out.println(money);
比如在没有赋值的情况下直接使用变量money
修改这个错误:使用变量的修改操作
double money=0;
System.out.println(money);
money = 99.8;
System.out.println(money);
变量的修改
修改变量则是对变量的初始值或者之前的值进行再次赋值操作
int age = 18;
age = 19; //修改变量的值
System.out.println(age);
变量的注意事项
-
在同一对花括号中,变量名不能重复。
-
变量在使用之前,必须初始化(赋值)。
-
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
-
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
数据类型的转换
在java的基本数据类型中,默认的整数类型是int,默认的小数类型是double
数据类型在内存中,可以看成一个容器,比如杯子,水桶,池子。这些容器都是用来装水(数据)的。
那么,将小的容器中的数据,放入大的容器中,也是可以存储的。但是,将大的容器中的数据,放入小的容器中,则会出现数据溢出的问题。
在Java中,针对数据类型转换分为两种情况:
-
自动类型转换(隐式转换)
-
强制类型转换(显示转换)
自动转换
对象一般是基本数据类型
自动类型转换,是JDK根据数据类型来自动转换。一般是基本的数据类型才会自动转化。并且,是由小范围到大范围进行转换,将小范围的容器放在大范围的容器里,依旧是可以容纳相关的数据。
由于char数据类型比较特殊,字符可以按照ascll表格进行自动转换。这种转换方式可以将char字符和数值1对1的对应。
相关字节范围如下,具体取值范围只需要知道byte是在-128到127即可
-
byte:1(字节)
-
short:2(字节)
-
int:4(字节)
-
long:8(字节)
-
char:2(字节)
-
float:4(字节)
-
double:8(字节)
精度范围:字符<short之上的整数<单精度<双精度
按照范围的大小,和精度范围,有小到大自动转换,可以如下图所示:
强制转换
格式:
数据类型 新变量名称 = (数据类型)变量
对象一般是引用数据类型
强制转换为了将数据类型取值范围大容器,转变为使用数据取值范围内小的容器。可以理解为将桶里得水放在被子里。这种会出现数据溢出的风险,这需要取决于桶里的水有多少。
数据溢出后,可能会改变数据的值,也会造成乱码等等错误,严重会直接报错而中断程序
强制转换,是主动发出的,则需要使用相关的工具符号:()
转换格式:(转换类型)被转变量
double b = 100.99;
int a = (int) b;
-
需要注意的地方:接收的数据类型和括号里的数据类型保持一致即可
如下所示,会出现无法装入容器的现象。
double num1 = 1.9;
char num2 = num1;
改正:
double num1 = 1.9;
char num2 = (char) num1;
类型提升(扩展)
-
由于默认的整数类型是int,小数类型是double
-
那么当小于int类型的整数参与运算的 时候,会自动提升数据类型到int
-
同理,小数类型参与运算的时候 ,会自动提升到double类型
public static void main(String[] args) {
char num1 = 1;
byte num2 = 2;
int sum = num1+num2;
System.out.println(sum);
}
常量优化机制
常量优化机制:自动判断结果的数据类型是否满足接收的容器类型的范围之内。如果是,则编译通过,如果不是则报错。
注意:如果出现了变量参与运算,则常量优化机制都不会执行。
对象一般都是基本数据类型(内置数据类型)
在Java中的默认整型是int,浮点型是double:
-
非int类型的整数数据进行运算的时候,会自动提升为int类型来参与运算,返回结果也是int类型
-
非double类型的浮点数进行运算的时候,会自动提升为double类型进行运算,返回结果double类型
如下图所示:整数a变量,b变量自动提升为了int类型,这种转换是自动的,依靠的是Java的隐式转换
如果是A常量和B常量,则可以使用java的优化机制,即可通过编译:(我这里使用了Final关键字,来将变量变成常量)
final short a = 1;
final short b = 1;
short c = a + b;
随便几个问题
-
Java中有哪些注释?
-
随便说几个标识符的创建规则
-
Java中的基本数据类型有哪些?
-
Java中的数据类型可以分为哪两种??
-
定义变量的格式是什么??
-
暂无评论内容