文章目录
关键字
概念
Java预定义的有特殊含义的单词。
特点
- 常用的开发工具高级记事本 / IDE,能够变颜色的一些单词。
- 都是小写字母组成。
- Java一共提供了50个关键字。
- 都是有特殊含义的单单词。
- 关键字不能作为标识符。
关键字
abstract | assert | boolean | package | interface |
---|---|---|---|---|
break | byte | case | int | long |
catch | char | class | native | new |
const | continue | default | null | private |
do | double | else | protected | public |
extends | final | finally | return | short |
float | for | goto | if | static |
implements | import | instanceof | strictfp | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
注意
以下单词不是关键子:
- main
- String
- System
- in / out
- print / println
标识符
概念
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。
简而言之就是给类,接口,方法,变量起名字。
命名规则
-由字母、数字、下划线_和美元符号$组成
-不能以数字开头
-区分大小写
-不能使Java中的关键字
规范
- 包文件
- 一般都是公司的域名反写。
- 所有单词都使用"."隔开。
- 每个单词都是小写。
eg:www.baidu.com —com.baidu.www
- 类 class
- 所有单词首字母大写,其他都是小写。
eg: HeloWorld IfDemo
- 接口(Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。)
- 所有单词首字母大写。
- 一般会在第一个单词前面加上大写字母"I"。
-
接口的实现类
1.所有单词首字母大写。
2.最后一个单词后面加上“Impl"。 -
抽象类
- 所有单词首字母大写。
- 一般会在第一个单词前面加上大写字幕"Abs"。
- 变量
- 第一个单词首字母小写,其它单词首字母大写。
- 一般都是名词。
- 方法
- 第一个单词首字母小写,其它单词首字母大写。
- 一般都是动词。
- 常量
- 所有单词都是大写。
- 单词之间用_隔开。
常量
概念
在程序的执行过程中,其值不会发生改变的量。
常量的分类
字面值常量
- 整型常量
二进制 由0,1组成,ob开头
八进制 由0~7组成,o开头
十进制 由0~9组成,默认
十六进制 由0~9,A,B,C,D,E,F组成,0x开头 - 小数常量
0.2F float类型的小数常量
0.2D double类型的小数常量 - 布尔常量
只能取两个值
true false - 字符常量
字符常量由 ’ '包裹
里面只能有一个字符
转义字符可以由两个字符组成,第一个是 \ - 字符串常量
由双引号包裹
里面可以有一个字符也可以有多个字符
字符串里面可以是空串 - null常量
表示引用类型的常量自定义常量
变量
概念
在程序的执行过程中,其值可以发生改变的量。
本质:就是一个地址。
变量的三要素
- 声明
- 赋值
- 使用
注意
- 变量一定要先声明再赋值最后使用,声明和赋值可以一起。
- 变量不能重复定义。
- 变量不可以连续定义 int a = b = c =0;
- 建议一行只写一条语句。
Java的基本数据类型
Java是一种强类型语言
- 常量是有数据类型的
- 变量都必须声明其数据类型
8种基本类型所占字节数及取值范围
类型 | 字节数 | 位数 | 取值范围 |
---|---|---|---|
byte | 1 | 8 | -128~127 |
short | 2 | 16 | -32768~32767 |
int | 4 | 32 | -2的31次方到2的31次方-1 |
long | 8 | 64 | -2的63次方到2的63次方-1 |
float | 4 | 32 | |
double | 8 | 64 | |
char | 2 | 32 | 0~65535 |
boolean | 1前七位都是0 |
注意事项
- 整数常量默认是int类型,浮点数(小数)常量默认是double类型
- long,float类型需要加上后缀
例如:long l = 1000L;,float f = 12.5f; - 字符串不是基本数据类型,属于引用数据类型
数据类型转换
类型转换的依据: 取决数据的取值范围
byte -> short -> int -> long -> float -> double
char ->
规则
- 自动类型转换
将小类型的数据转换成大类型数据,系统会自动转换 - 强制类型转换
将大类型的数据转换成小类型的数据,会编译报错
解决办法: 强制类型转换
格式:
目标类型 变量名 = (目标类型) 被转换的类型;
强制类型转换会出现的问题:
1.精度的丢失
2.数据的溢出 - btye / short /char 特例
下面的都可以输出结果
byte by1 = 25;
short s = 32767;
char ch = 65;
System.out.println(by1+"\n"+s+"\n"+ch);
- byte/short 和 char 参与转换,都需要强制类型转换
//char 与 byte之间进行转换需要强制转换
byte by5 = 100;
char ch2 = (char)by5;
System.out.println(ch2);
char ch3 = 98;
byte by6 = (byte)ch3;
System.out.println(by6);
//short 与 char 之间进行转换需要强制转换
short s = 65;
char ch4 = (char)s;
System.out.println(ch4);
char ch5 = 98 ;
short s1 = (short)ch5;
System.out.println(s1);
- 表达式类型提升
// 当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
double d = 2.5;
int i3 = 30;
int i4 = (int)(d + i3);
System.out.println(i4);
- 当byte short char 之间参与运算的时候,底层都会转换成int类型来计算
char ch1 = 'A';
short s1 = 20;
byte b1 = 30;
short s2 = (short)(s1 + ch1) ;
byte s3 = (byte)(b1 + ch1) ;
System.out.println(s2 + "\n" + s3);
- boolean类型不能够参与运算和转换
- 字符串在参与运算中的转换问题,字符串相加是拼接操作
String ss = "HelloWorld";
System.out.println(ss + 2.5); // HelloWorld2.5
System.out.println(2 + 2 + "22" + 2 + 2); // 42222
运算符
算术运算符
Java常见的算数运算符:
算术运算符 | 名称 | 举例 |
---|---|---|
+ | 加 | 1+1=2 |
- | 减 | 5-3=2 |
* | 乘 | 9*9=81 |
/ | 除 | 100/10=10 |
% | 取余 | 5/8=5 |
++ | 自增 | int i =5; i++ |
– | 自减 | int i =8 ; i– |
注意:
++ 和 – 既可以出现在操作数的左边,也可以出现在右边,但结果是不同。
在左边,先自增自减再进行运算
在右边,先进行运算再自增自减
一定要注意哦!自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误滴!
赋值运算符
赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的操作数。
比较运算符
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
注意
-
> 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型
-
== 、 != 两边的操作数既可以是数值类型,也可以是引用类型
逻辑运算符
面试题: & 和 && 的区别
& 表示按位与,无论什么情况都会同时计算运算符两边的表达式
&& 表示短路与, 如果前面的表达式为false,那么无论后面结果如何,都不会去计算后面表达式的值
&&开发中使用,&基本不用
&常用于位运算,位运算的效率比普通运算要高很多
条件运算符(三目运算符)
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = input.nextInt();
System.out.println("请输入第二个数:");
int b = input.nextInt();
int c = (a >= b) ? a:b;
System.out.println("最大值是:"+ c);