Java背景
Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。
2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com
Java语言共同创始人之一:詹姆斯·高斯林 (James Gosling),被称为“Java之父”
Java名称的由来:
在最初Java语言是叫做oak(橡树)。是因为刚开始公司门口有一颗橡树。所以就叫做橡树。然后发现oak已经被美国橡树公司注册了,就不能再继续使用了。所以需要改名。而程序员最爱喝的是咖啡,盛产咖啡的岛叫做爪哇岛,由此语言就叫做Java了
初步了解
Java的三大平台:
-
JavaSE
Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础。
-
JavaME
Java 语言的(小型版),用于嵌入式消费类电子设备。
-
JavaEE
Java 语言的(企业版),用于 Web 方向的网站开发。
JVM、JRE和JDK:
-
JVM(Java Virtual Machine),Java虚拟机
-
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
-
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
JDK的安装目录介绍:
目录名称 |
说明 |
bin |
该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 |
conf |
该路径下存放了JDK的相关配置文件。 |
include |
该路径下存放了一些平台特定的头文件。 |
jmods |
该路径下存放了JDK的各种模块。 |
legal |
该路径下存放了JDK各模块的授权文档。 |
lib |
该路径下存放了JDK工具的一些补充JAR包。 |
Java快速入门
学习计算机语言离不开HelloWorld
各种计算机语言都习惯使用该案例作为第一个演示案例。就是在计算机屏幕上输出“HelloWorld”这行文字。
开发Java程序,需要三个步骤:编写程序 ->编译程序 -> 运行程序
HelloWorld案例
先不要考虑为什么,照着案例敲下来
- 新建文本文档文件,修改名称为HelloWorld.java。
- 用记事本打开HelloWorld.java文件,输写程序内容。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
- 保存文件,打开命令行窗口(cmd,将目录切换至java文件所在目录,编译java文件生成class文件,运行class文件。
具体做法:
javac HelloWorld.java
java HelloWorld
常见问题如下:
1、非法字符问题。Java中的符号都是英文格式的,并且注意单词书写错误。
2、大小写问题。Java语言对大小写敏感(区分大小写)。
3、在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件。
4、编译命令后的java文件名需要带文件后缀.java
5、运行命令后的class文件名(类名)不需要带文件后缀.class
记事本终究不适合用于编程开发,我们无论是工作学习都是要用IDE(集成开发环境),这里推荐使用idea,功能强大,相关教程网上有很多
Java基础语法
注释
注释是对代码的解释和说明文字,可以提高程序的可读性,因此在程序中添加必要的注释文字十分重要。Java中的注释分为三种:
- 单行注释。单行注释的格式是使用//,从//开始至本行结尾的文字将作为注释文字。(IDEA快捷键:ctrl+/)
// 这是单行注释文字
- 多行注释。多行注释的格式是使用/* 和 */将一段较长的注释括起来。
(IDEA快捷键:代码块注释 shift+/)
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。
- 文档注释。文档注释以
/**
开始,以*/
结束。
数据类型
计算机底层都是一些数字电路(理解成开关),用开表示0、关表示1,这些01的形式就是二进制。
数据在计算机底层都是采用二进制存储的,在计算机中认为一个开关表示的0或1称为1位。
“位(bit)”是计算机存储设备的最小信息单元,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最基本的存储单元叫“字节(byte)”,通常用大写字母”B”表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,其换算单位如下:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
Java是一个强类型语言,即Java中的数据必须明确数据类型。
在Java中的数据类型包括基本数据类型和引用数据类型(之后再讲)两种。
Java中的基本数据类型:
数据类型 |
关键字 |
内存占用 |
取值范围 |
整数 |
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 |
|
long |
8 |
负的2的63次方 ~ 2的63次方-1 |
浮点数 |
float |
4 |
1.401298e-45 ~ 3.402823e+38 |
|
double |
8 |
4.9000000e-324 ~ 1.797693e+308 |
字符 |
char |
2(与c语言不同) |
0-65535 |
布尔 |
boolean |
1 |
true,false |
说明:
e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
在java中整数默认是int类型,浮点数默认是double类型。
变量
变量:在程序运行过程中,其值可以发生改变的量。
从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化
变量的定义格式:
// 声明变量并赋值
数据类型 变量名 = 初始化值;
int age = 18;
System.out.println(age);
// 先声明,后赋值(使用前赋值即可)
数据类型 变量名;
变量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
-
在同一对花括号中,变量名不能重复。
-
变量在使用之前,必须初始化(赋值)。
-
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
-
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
关键字与标志符
定义:Java自己保留的一些单词,作为特殊功能的,例如:public、class、byte、short、int、long、double…
我们不能用来作为类名或者是变量名称,否则报错。
注意:关键字很多,不用刻意去记。
常见关键字:
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
const |
continue |
default |
do |
double |
else |
enum |
extends |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
strictfp |
short |
static |
super |
switch |
synchronized |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
标志符
标志符就是由一些字符、符号组合起来的名称,用于给类,方法,变量等起名字的规矩。
基本要求:由数字、字母、下划线(_)和美元符($)等组成
强制要求:不能以数字开头、不能是关键字、区分大小写
基本命令规范
变量名称:满足标识符规则,建议全英文、有意义、首字母小写,满足**“驼峰模式”**,例如:int studyNumber = 59。
类名称: 满足标识符规则,建议全英文、有意义、首字母大写,满足“驼峰模式”,例如:HelloWorld.java。
类型转换
Java中小范围类型的变量会自动转换成当前较大范围的类型再运算。
byte/short/char < int < long < float < double
注意事项:
表达式的最终结果类型由表达式中的最高类型决定。
在表达式中,byte、short、char 是直接转换成int类型参与运算的。
强制类型转换
类型范围大的数据或者变量,不能直接赋值给类型范围小的变量。必须进行强制类型转换。
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
例如:
double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(小数位直接舍弃)
说明:
-
char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a’对应97。
-
整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。
-
boolean类型不能与其他基本数据类型相互转换。
运算符
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。
算术运算符
符号 |
作用 |
说明 |
+ |
加 |
就是加 |
- |
减 |
就是减 |
* |
乘 |
就是乘 |
/ |
除 |
就是除 |
% |
取余 |
获取的是两个数据做除法的余数 |
注意:整数操作只能得到整数,要想得到小数,必须有浮点数参与运算
char类型参与算术运算,使用的是计算机底层对应的十进制数值。需要我们记住三个字符对应的数值:
‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加
‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加
‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加
字符串的“+”操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
当连续进行“+”操作时,按照运算的优先级从左到右逐个执行。
赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
符号 |
作用 |
说明 |
= |
赋值 |
a=10,将10赋值给变量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的余数给a |
注意:扩展的赋值运算符隐含了强制类型转换。
自增自减运算符
符号 |
作用 |
说明 |
++ |
自增 |
变量的值加1 |
– |
自减 |
变量的值减1 |
注意事项:
++和-- 既可以放在变量的后边,也可以放在变量的前边。
单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–。
参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。
符号 |
说明 |
== |
a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= |
a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> |
a>b,判断a是否大于b,成立为true,不成立为false |
>= |
a>=b,判断a是否大于等于b,成立为true,不成立为false |
< |
a<b,判断a是否小于b,成立为true,不成立为false |
<= |
a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
符号 |
作用 |
说明 |
& |
逻辑与 |
a&b,a和b都是true,结果为true,否则为false |
| |
逻辑或 |
a|b,a和b都是false,结果为false,否则为true |
^ |
逻辑异或 |
a^b,a和b结果不同为true,相同为false |
! |
逻辑非 |
!a,结果和a的结果正好相反 |
短路逻辑运算符
符号 |
作用 |
说明 |
&& |
短路与 |
作用和&相同,但是有短路效果 |
|| |
短路或 |
作用和|相同,但是有短路效果 |
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
三元运算符
三元运算符语法格式:
关系表达式 ? 表达式1 : 表达式2;
解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
数据输入
API(Application Programming Interface,应用程序编程借口)
- 可以理解为Java写好的程序
- Oracle为Java写好的程序提供了相应的API文档
System、string在JDK的java.lang包下,不需要导包(默认
我们可以通过 Scanner 类来获取用户的输入。使用步骤如下:
1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
import java.util.Scanner;
2、创建Scanner对象。
Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
3、接收数据
int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。