提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、Java介绍:
Java特性和优势:跨平台/可移植性、安全性、面向对象、简单性。高性能、分布式、多线程、健壮性
Javase:标准版
Javaee:企业版
Javame:微型版
DOS(Disk Operating System),是早期个人计算机上的一类操作系统。
常用命令:
- cd 目标路径 进入下一个目录
- cd … 进入父目录
- dir 查看本目录下的文件和子目录列表
- cls 清除屏幕命令
- 上下键 查找敲过的命令
- Tab键 自动补齐命令
在我们学习开发中,包括以后在企业中从事软件开发时,一般使用集成开发环境(IDE)。
- IDEA 官方网址:http://www,jetbrains.com/idea/
- VS Code 官方网址:http://code.visualstudio.com/
- eclipse 官方网址:http://www.eclipse.org
二、变量、数据类型、运算符
1.注释
- 单行注释
单行注释使用“//”开头。
- 多行注释
多行注释以“/”开头以“/”结尾。注意,多行注释不能嵌套使用。
- 文档注释
文档注释以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些
JavaDoc 标签(后期写项目时,可以生成项目的 API)
/**
* Welcome 类(我是文档注释)
* @author 高淇
* @version 1.0
*/
public class Welcome {
//我是单行注释
public static void main(String[ ] args/*我是行内注释 */) {
System.out.println("Hello World!");
}
/*
我是多行注释!
我是多行注释!
*/
}
2.标识符
标识符是用来给变量、类、方法以及包进行命名的。4大规则:
-
必须以字母、下划线_、美元符号$开头。
-
其他部分可以是字母、下划线”_“、美元符”$“和数字的任意组合。
-
大小写敏感,且长度无限制。
-
不可以是java的关键字。
static 修饰为静态量
fInal定义一个常量,常量一旦被初始化后不能再更改。
声明格式: fianl type varName=value;
3.基本数据类型
Java 数据类型分为两大类:基本数据类型(primitive data type)和引用数据类型(reference
data type)。
byte:字节 一个字节有八位
1.整数型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -2^7 ~ 2^7-1(-128~127) |
short | 2字节 | -2^15 ~ 2^15-1 (-32768~32767) |
int | 4字节 | -2^31 ~ 2^31-1 (-2147483648~2147483647) 约 21 亿 |
long | 8字节 | -2^63 ~ 2^63-1 |
Java 语言整型常量的四种表示形式
- 十进制整数,如:99, -500, 0
- 八进制整数,要求以 0 开头,如:015
- 十六进制数,要求 0x 或 0X 开头,如:0x15
- 二进制数,要求 0b 或 0B 开头,如:0b01110011
Java 语言的整型常数默认为 int 型,声明 long 型常量可以后加‘ l ’或‘ L ’ 。
【示例】long 类型常数的写法及变量的声明
long a = 55555555; //编译成功,在 int 表示的范围内(21 亿内)。
long b = 55555555555;//不加 L 编译错误,已经超过 int 表示的范围。
报错:The literal 55555555555 of type int is out of range,所以我们需要修改代码为:
long b = 55555555555L;
2.浮点型
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
-
float 类型又被称作单精度类型,尾数可以精确到 7 位有效数字。
-
double 表示这种类型的数值精度约是 float 类型的两倍,又被称作双精度类型,绝大部分应用程序都采用 double 类型。
-
Java 浮点类型常量有两种表示形式
(1) 十进制数形式: 例: 3.14 314.0 0.314
(2) 科学记数法形式 例:3.14e0 3.14E2 3.14E-1
-
浮点型不精确,不要用于比较浮点数存在舍入误差,数字不能精确表示。浮点数适合普通的科学和工程计算,精度足够;但不适合精度要求非常高的商业计算,这时候要使用 BigDecimal 进行运算和比较。
-
浮点常量默认类型是 double,要改成 float 可以后面加 F 或 f
浮点型数据的比较一
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为 false
浮点型数据的比较二
float d1 = 423432423f;
float d2 = d1+1;
if(d1==d2){
System.out.println("d1==d2");//输出结果为 d1==d2
}else{
System.out.println("d1!=d2");
}
不要使用浮点数进行比较!需要比较请使用 BigDecimal 类.
java.math 包下面的两个有用的类:BigInteger 和 BigDecimal,这两个类可以处理任意长度的数值。BigInteger 实现了任意精度的整数运算。BigDecimal 实现了任意精度的浮点运算。
3.字符型
char
Unicode 字符集是为了给全世界所有字符一个唯一的编码,“唯一”对应的英文为Unique,而编码的英文为 code。
Unicode 采用了字符集和编码分开的策略。
转义字符
转义符 | 含义 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\t | 制表符(tab) | \u0009 |
\“ | 双引号 | \u0022 |
\‘ | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
注意事项:以后我们学的 String 类,其实是字符序列(char sequence), 本质是 char 字符组成的数组。
4.布尔型(boolean)
JVM 规范指出 boolean 当做 int 处理,也就是 4 字节,boolean 数组当做 byte 数组处理,这样我
们可以得出 boolean 类型占了单独使用是 4 个字节,在数组中是确定的 1 个字节。
注意:不要这样写:if ( flag = = true ),只有新手才那么写。关键也很容易写错成if(flag=true),这样就变成赋值 flag 为 true 而不是判断!老鸟的写法是 if ( flag )或者 if ( !flag)
4.运算符(operator)
算术运算符:
- 二元运算符:+,-,*,/,%
一元运算符:++,–
赋值运算符: =
扩展运算符: +=,-=,*=,/=
关系运算符 : >,<,>=,<=,==,!= instanceof
逻辑运算符 : &&,||,!,^
位运算符 : &,|,^,~ , >>,<<
条件运算符 : ? :
字符串连接符 : +
1.算术运算符
二元运算符的运算规则:
整数运算:(两个都为long,结果为long;其他都为int)
-
如果两个操作数有一个为 long, 则结果也为 long。
-
没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
浮点运算:
-
如果两个操作数有一个为 double,则结果为 double。
-
只有两个操作数都是 float,则结果才为 float。
取模运算:
- 其操作数可以为浮点数,一般使用整数,
int d2=32/3; //整型除法取整=10两整型相除
double d3=32/3; //浮点型=10.0两整型相除
double d4=32.0/3; //浮点型=10.666666666666666浮点型除以整型
double d5=32/3.0;//浮点型=10.666666666666666整型除以浮点型
自增自减:
//测试自增,自减
int g=30;
g=10;
int h=g++; // g++先赋值,后自增=10
int i=++g; //++g先自增,后赋值=12
2.赋值及其扩展赋值运算符
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
a*=b+3; //相当于a=a*(b+3)
3.关系运算符
结果为true/false;
运算符 | 含义 | 示例 |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
注意事项
-
==、!= 是所有(基本和引用)数据类型都可以使用。
-
> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long,float/double 以及
char)
4.逻辑运算符
逻辑运算的操作数和运算结果都是boolean值
运算符 说明
与 | & | 只要有一个为 false,则 false |
---|---|---|
短路与 | && | 只要有一个为 false,则 false |
或 | | | 只要有一个为 true, 则 true |
短路或 | || | 只要有一个为 true, 则 true |
非 | ! | 取反 |
异或 | ^ | 相同为 false,不同为 true |
//短路与、短路或
// int b3=3/0; //会报不能除以0的异常
Boolean b3=1>2&&(4<3/0); //Boolean b4=1>2&(4<3/0);会报不能除以0的异常
//逻辑与(&)在运算时会连续运算所有需要判断的命令,但短路与(&&)当遇到false就会停止。
System.out.println(b3); //=false
5.位运算符
位运算符 | 说明 |
---|---|
~ | 取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 左移运算符,左移一位相当于乘2 |
>> | 右移运算符,右移一位相当于除2取商 |
6.字符串连接符
- “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作
数转换为字符串然后再进行连接。
//条件是string,不是char。若是char,则仍然是加法
char c1='h';
char c2='i';
System.out.println(c1+c2) ; //=209
//通过加空字符串,让整个+都变成连接符
System.out.println(" "+c1+c2); //=hi
-
java中的单引号表示字符,java中的双引号是字符串。
-
单引号引的数据一般是char类型的;双引号引的数据 是String类型的。
7.条件运算符
X?Y:Z 运算结果:X为true,则返回Y, X为false,则返回Z。
String type = score<60?"不及格":"及格";
x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算的结果为表达式 y 的
值,否则整个运算结果为表达式 z 的值。
8.运算符优先级问题
优先级 | 运算符 | 类 |
---|---|---|
1 | () | 括号运算符 |
2 | !、+(正号)、-(负号) | 一元运算符 |
2 | ~ | 位逻辑运算符 |
2 | ++、– | 递增与递减运算符 |
3 | *、/、% | 算术运算符 |
4 | +、- | 算术运算符 |
5 | <<、>> | 位左移、右移运算符 |
6 | >、>=、<、<= | 关系运算符 |
7 | ==、!= | 关系运算符 |
8 | & | 位运算符、逻辑运算符 |
9 | ^ | 位运算符、逻辑运算符 |
10 | | | 位运算符、逻辑运算符 |
11 | && | 逻辑运算符 |
12 | || | 逻辑运算符 |
13 | ?: | 条件运算符 |
14 | =、+=、-=、*=、/=、%= | 赋值运算符、扩展运算符 |
-
推荐大家不需要去刻意的记这些优先级,表达式里面优先使用小括号来组织!!
-
逻辑与、逻辑或、逻辑非的优先级一定要熟悉!(逻辑非>逻辑与>逻辑或)。如 a||b&&c 的运算结果是:a||(b&&c),而不是(a||b)&&c
5.数据类型的转换
1.自动类型转换(TypeAuto)
自动类型转换指的是**容量小的数据类型可以自动转换为容量大的数据类型**。黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
2.强制类型转换(TypeCost)
- 不能在布尔类型和任何数值类型之间做强制类型转换
- 浮点数强转为整数,直接丢失小数部分
- 强制转型,超过了表述范围,则会转成一个完全不同的值
3.基本类型转化时常见错误和问题
-
操作比较大的数时,要留意是否溢出,尤其是整数操作时。
-
L 和 l 的问题:
(1) 不要命名名字为 l 的变量,字母 l 容易和数字 1 混淆。
(2) long 类型使用大写 L,不要用小写 l。
6.Scanner处理键盘输入
【示例】使用 Scanner 获取键盘输入
import** java.util.Scanner;
public class Welcome2 {
public static void main(String[ ] args) {
Scanner scanner = new Scanner(System.in);
// 将输入的一行付给 string1
String string1 = scanner.nextLine();
// 将输入单词到第一个空白符为止的字符串付给 string2
String string2 = scanner.next();
// 将输入的数字赋值给变量
int a = scanner.nextInt();
System.out.println("-----录入的信息如下-------");
System.out.println(string1);
System.out.println(string2);
System.out.println(a * 10);
}
}