【1基础语法】2-标识符-数据类型及转换
1. 注释
注释的概念:为程序进行解释说明的,编译期不会对注释进行编译操作
注释的好处:
- 是代码的可读性提高
- 开发中工作项目交接更加顺畅
- 程序调试更方便
单行注释: //
多行注释: /* 在此处写我们的注释内容 */ 多行注释是不能嵌套的
文档注释: /** */
注意:
- 文档注释可以是javadoc工具来生成API,后续会介绍
- 初学者一定要养成良好的习惯,先写注释,再写代码
- 开发中的注释不能随便删除
public class zhushi
{
/**
* 我们的第一个main方法
*/
public static void main(String[] args){
// 声明一个变量 测试
/*多行注释
注释1
注释2
注释3
*/
String userName = "张三";//单行注释
}
}
2. 关键字
Java关键字:是Java语言保留供内部使用的,比如class 用户与定义类。关键字也可以称为保留字,他们的意思是一样的
public class HelloWorld
{
public static void main(String[])
{
System.out.println("HelloWorld...");
}
}
关键字是Java语言事先定义的,有特殊的意义的标识符,简而言之就是在高级记事本或者IDE中颜色会改变的单词就是关键字
关键字 | |||||
---|---|---|---|---|---|
abstract | assert | boolean | break | byte | case |
catch | char(character) | class | const | continue | default |
do | double | else | extends | final | finally |
float | for | goto | if | implements | import |
null | package | private | protected | public | return |
short | static | strictfp | super | switch | synchronized |
this | throw | throws | transient | try | void |
volatile | while |
注意
:不需要刻意的去背!后面我们会慢慢的接触到每个关键字的用法
关键字的特点
-
关键字基本都是由小写字母组成的
-
Java语言规定关键字是不能作为标识符
-
目前Java中共有50个关键字
其中"const"和"goto"这两个关键字在Java中是没有具体的含义的,预留的关键字。在其他的编程语言中"const"和"goto"都是关键字
课堂小案例:
判断一下单词哪些是关键字:
class HelloWorld public static void main String System out println
答案:
class:类名
public:共有的
static:静态的
void:没有返回结果
3. 标识符
标识符:等同于现实生活中的取名字,Java中对包、类、方法、参数和变量等要素命名的时候使用的字符序列称为标识符。 简而言之就是给类,接口,方法等起名字。
3.1 标识符的命名规则
规则:一定要遵守的,如果违反那么编译会报错
- 是由字母、数字、下划线_、美元符$组成
- 不能以数字开头
- 区分大小写
- 不能使用Java中的关键字
3.2 标识符的命名规范
规范:大家相互约定,都会遵守,如果不遵守编译不会报错
- 驼峰命名法(schoolName)
- 见名知意(使用有意义的英文单词)
- 命名的长度不要超过31个字符
3.3 开发中标准的规范
针对开发中对 包、类、抽象类、接口和实现类、变量、方法、常量的命名规范
3.3.1 包(packge)
也就是文件夹
- 一般都是用公司域名的反写
- 所有的单词使用"."隔开
- 每个单词都是小写的
// www.bobo.com
com.bobo.www
com.bobo.oa
3.3.2 类(抬头骆驼)
- 所有的单词的首字母大写,其他字母小写
- 见名知意
eg:HelloWorldDemo
3.3.3 接口(抬头骆驼)
- 所有的单词的首字母大写,其他字母小写 interface
- 一般会在第一个单词的前面添加一个大写的 “I”
eg: IStudent IPerson IUserService
3.3.4 接口的实现类(抬头骆驼)
- 所有的单词的首字母大写,其他字母小写
- 一般我们会在最后一个单词后面追加"Impl"
eg: StudentImpl、PersonImpl、UserServiceImpl
3.3.5 抽象类(抬头骆驼)
- 所有的单词的首字母大写,其他字母小写
- 在单词的开头一般都会加上 “Abs” Abstract
eg: AbsStudent 、AbsPerson
3.3.6 变量(低头骆驼)
- 第一个单词首字母小写,其他单词首字母大写
- 一般都是名词
eg: studentName、studentAge 、scoretotalScore
3.3.7 方法(低头骆驼)
- 第一个单词首字母小写,其他单词首字母大写
- 一般是动词
eg: getTotalScore 、getAvgScore 、getMaxScore、getMinScore
3.3.8 常量
- 所有的单词都是大写
- 每个单词间都有"_"分割
eg: MAX_VALUE、MIN_VALUE
面试题:说一说你对Java规范的理解
4. 常量和变量
4.1 常量
4.1.1 什么是常量
在程序的执行过程中,值不会发生改变的量,也就是被关键字final(后面会讲)修饰
的变量称常量:
final int MAX_VALUE = 10/整形常量
4.1.2 为什么要用常量
一周有7天
PI:3.1415926
一年有12个月
4.1.3 常量的分类
根据位置划分:常量有三种类型:静态常量、成员常量和局部常量。(后面会讲什么是静态,成员、局部不慌)
首先我们先介绍常量分类
1.) 整数常量
大家要注意整数的进制。
- 二进制 由 0 1组成,常量表示二进制 0b开头 0b010110
- 八进制 由0~7组成,由 0 开头 012
- 十进制 由0~9组成,默认就是十进制
- 十六进制 由0~9 ABCDEF组成,开头 0x
2.) 小数常量
- float 单精度小数 0.5F
- double 双精度 0.5D 默认
float,double后面会具体的来介绍这两个类型
3.) 布尔型常量
用来表示 “真” “假”,在程序中布尔型只有两个值 true
false
4.) 字符常量
什么是字符:字符串中的最小单位,包括字母,数字,运算符,标点符号和其他符号
字符本质上还是数字
针对有特殊含有的字符我们需要通过转义符来实现 “\”
\t 制表 \n 换行 \r\n 换行 \R 换行 \’ \"
5.) 字符串常量
- 由双引号包裹
- 里面可以有一个字符也可以有多个字符还可以没有字符
public class ConstantDemo
{
public static void main(String[] args)
{
// 整数 常量
System.out.println(10);
// 二进制常量 13
System.out.println(0b01101);
// 八进制 10
System.out.println(012);
// 十六进制 65535
System.out.println(0xFFFF);
System.out.println(5.5f);
System.out.println(5.6D);
System.out.println(true);
System.out.println(false);
// 字符 '' 单引号不能为空
System.out.println('\'');
// 字符串常量 必须写在一对 双引号之内
System.out.println("HelloWorld");
System.out.println("");
// System.out.println(null);
}
}
1.3.2 自定义常量
后面章节中会和大家介绍
4.2.变量
变量的定义:在程序的执行过程中,其值可以发生改变的量。类似于数学中的未知数 x
变量的本质:就是一个地址(计算机组成原理内容)
变量的三要素:
- 声明
- 赋值
- 使用
public class VariableDemo
{
public static void main(String[] args)
{
// 定义一个变量 租房子 我 我要租一个两室一厅的房子
int a ;// 声明了一个变量
a = 20; // 赋值操作 将一个常量赋值给了一个变量
System.out.println(a); // 使用
a = 50;
System.out.println(a); // 使用
int b = 100; // 声明和赋值一块执行
System.out.println(b);
int c,d,e; // 声明多个变量可以通过,连接
c = 1;
d = 2;
e = 3;
int c1 = 20,d1=30,e1=40; // 这种方式语法上支持,但是不推荐 推荐一行声明一个变量
}
}
注意点:
- 变量一定要先声明再赋值在使用
- 变量的定义不能够重复
- 不能够连续定义变量 int x=y=z=123;
- 建议一行只写一条语句
5.基本数据类型和转换
5.1 计算机单位
计算机能识别是只有二进制文件0
和1
eg:10010101010101
单位 | 说明 |
---|---|
1位 | 上面的每一个0或者1就是一位 |
1B | 1B=1*8 字节,1一个字节等于8位 0000 0000 10000 0000 -1 -128~127 |
1KB | 1KB=1024*B |
1MB | 1MB=1024*1KB |
1GB | 1GB=1024*1MB |
1TB | 1TB=1024*1GB |
… |
5.2 数据类型
5.2.1 八大基本数据类型
Java是一门强类型的语言。针对于每一种数据都提供的对应的数据类型
5.2.2 引用数据类型
后面专门介绍
- 类(class)
- 接口(interface)
- 数组([])
5.3 数据类型转换
数据类型转换的依据:取决于数据的取值范围
5.3.1 自动类型转换
我们将取值范围小的数据保存到取值范围大的数据类型中的时候是可以自动转换类型的
public class DataTypeDemo{
public static void main(String[] args){
// 1.数值类型 八个基本数据类型
byte b1 = 100;
short s1 = 300;
int i1 = 999;
long l = 1234567890l;
// 自动类型转换
short s2 = b1; // byte --> short
int i2 = s1 ; // short --> int
long l2 = i1; // int --> long
// 2.浮点型
float f1 = 1234.567f;
double d1 = 1234.567d;
double d2 = f1;
// 3.字符型
char c1 = 'a';
// 4.boolean
boolean b2 = true;
boolean b3 = false;
}
}
5.3.2 强制类型转换
我们将取值访问比较大的变量赋值给取值范围比较小的变量,那么此时会出现数据的丢失,所以此时我们需要强制类型转换。
public class DataTypeDemo{
public static void main(String[] args){
// 1.数值类型 八个基本数据类型
byte b1 = 100;
short s1 = 300;
// 强制类型转换
byte bb2 = s1; // short --> byte
System.out.println("b2 = " + bb2);
}
}
此时为了避免这个错误,我们需要强制类型转换
目标类型 变量名 = (目标类型) 被转换的类型;
public class DataTypeDemo{
public static void main(String[] args){
// 1.数值类型 八个基本数据类型
byte b1 = 100;
short s1 = 300;
// 强制类型转换
byte bb2 = (byte)s1; // short --> byte
System.out.println("b2 = " + bb2);
}
}
做数据类型的强制转换的时候会有数据溢出
和数据丢失
的可能.所以在做数据的强制类型转换的时候一定要谨慎!
5.3.3 类型转换的特例
在 byte、short、char在转换的时候系统会帮助我们做一些处理,我们在赋值给byte,short,char时,如果赋予的值在对于类型的范围之内,系统会帮助我们自动完成转换,次场景下我们不需要强制内容转换。
// 特例
byte by2 = 100;
//byte by3 = 129;
//short short1 = 32768;
char c1 = 65536;
System.out.println(c1);
5.3.4 byte/short和char转换,都需要强制类型转换
byte类型和char类型转换及short类型和char类型相互转换都是需要强制类型转换的
// short和byte类型 同 char类型转换的时候都需要强制类型转换
byte by4 = 120;
char c2 = (char)by4;
System.out.println(c2);
char c3 = 'd';
byte by5 =(byte) c3;
System.out.println(by5);
short s2 = 666;
char c4 = (char)s2;
System.out.println(c4);
5.3.5 表达式类型提升
当表达式运算符两边的类型不一致的时候,结果的类型会自动向高类型转换
// 表达式类型的提升
double d = 2.67;
int i3 = 50;
int i4 = d + i3; // double 和 int 会提升到 double
System.out.println(i4);
解决方式
int i4 = (int)d + i3; // double 和 int 会提升到 double
int i4 =(int)(d + i3);
5.3.6 byte,short,char之间参与运算
当byte,short,char之间参与运算的时候,底层都会转换为int类型来计算。
char c5 = 'a';
short s3 = (short)(c5 + 1); // c5 + 1 得到的结果的类型是int
System.out.println(s3);
char c6 = 'A';
byte b6 = 1;
short s4 = (short)(c6 + b6);
System.out.println(s4);
5.3.7 布尔型不能参与运算和转换的
在Java中boolean是不能参与运算和转换的。
boolean bool1 = false;
System.out.println(bool1 + 1);
short s5 = bool1;
5.3.8 字符串运算的时候拼接
当字符串类型的数据和其他数据做加法运算的时候都是之间拼接的
String ss = "HelloWorld";
System.out.println(ss + 2.5);
// 20101010
System.out.println(10 + 10 + "10" + 10 + 10);
5.3.9 变量和常量计算的问题
如果表达式是变量组成的,那么我们说讲的特例是不生效的,特例只针对常量
byte b7 = 20 + 30;
System.out.println(b7);
byte b8 = 30;
short s6 = 50;
byte b10 = (byte)(b8 + s6);
System.out.println(b10);
byte b9 = 10;
byte b11 = (byte)(b8 + b9);
System.out.println(b11);
ok今天就写道这了。。。。。。
【上一篇】:【1基础语法】1-Java基础入门