一、基础语法
1.环境配置
1.安装JDK
注意:可以安装多个JDK,版本为1.8,环境变量配置哪个,哪个就生效。
2.环境变量的配置
JAVA_HOME:配置的是JDK安装的目录
Path:配置的JDK下bin目录
CLASS_PATH:配置的是JDK下的lib目录,也可以写一个点
3.win+R打开DOS命令,输入java javac java -version测试是否配置成功
4.开发工具eclipse
5.开发工具IDEA,注意路径不要出现中文
2.JDK JRE JVM
JDK(Java Development Kit):Java开发工具包--开发的最小单位
JRE(Java Runtime Environment):Java运行时环境--运行的最小单位
JVM(Java Virtual Machine):Java虚拟机--负责加载并运行对应的字节码文件.class
1.运行过程:我们编写的源码是.java为后缀的,通过编译后生成的是.class字节码文件,交给JVM来执行
2.跨平台:只要在不同的操作系统上安装对应的JVM,就可以实现跨平台:一份代码,处处运行
3.语法基础
1.关键字:
在Java中,有一些单词被赋予了特定的意义,一共有50个关键字。
这50个单词都是全小写,其中有两个保留字:const和goto。
注意,关键字不能被用作标识符!
需要注意的是,除了上述的50个关键字以外,true,false,null也不可以被用作标识符~
2.标识符
UpperCamelCase大驼峰命名:
每个单词的首字母都要大写,比如类名:HelloWorld类名: Upper驼峰命名:每一个单词的首字母都要大写
LowerCamelCase小驼峰命名:
从第二个单词的首字母才开始大写,比如:方法名:nextLine() 变量名:deptName
在Java中,我们需要给代码中的很多元素起名,包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被称为标识符,一个正确的标识符需要遵循以下规则:
1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
2. 不能以数字开头。如:123name 就是不合法
3. 标识符严格区分大小写。如: tmooc 和 tMooc 是两个不同的标识符
4. 标识符的命名最好能反映出其作用,做到见名知意。
5. 标识符不能是Java的关键字
3.注释
几乎所有编程语言都允许程序员在代码中输入注释
因为编译器会忽略注释,所以注释并不会影响程序的运行结果。
注释的真正作用是: 它可以向任何阅读代码的人描述或者解释程序的实现思路,如何使用以及其它任何相关信息, 提高代码的可读性,方便后期的维护与复用。
Java的注释有3种:
1. 单行注释: 注释单行内容.
格式: 每行都以”//”开头.
快捷方式: Ctrl+/ 添加注释,同样的快捷键,再按一次取消注释
2. 多行注释:注释多行内容,虽然叫多行注释,也可注释单行内容.
格式: 以” /* ”开头, 以” * / ”结束.
快捷方式: 可以输入” /* ”之后按回车添加注释
3. 文档注释: 一般用来注释类和方法,通过注释内容来记录类或者方法的信息.
格式: 以” /** ”开头。 以” * / ”结尾
快捷方式: 输入 “ /** ” 之后按回车添加注释
4.变量
在JAVA中,我们需要记录一些数据
但这些数据的值是不固定的,总在变,我们可以把这些数据理解为变量。
我们通过三个元素来描述变量:变量类型 变量名以及变量值。
定义变量的两种格式:
格式一:声明变量时并且赋值:int age = 18;
格式二:先声明变量:String tel ; 然后给变量赋值:tel = 119;
注意:
- 变量名必须是一个有效的标识符
- 变量名不可以使用java关键字
- 变量名不能重复
二、基本类型
1.基本类型介绍(八种)
变量要保存值,这个值是存在内存中的,所以就需要向内存申请存储空间
java是一个强类型的语言
为了方便内存管理系统根据变量类型更加合理的分配内存空间
会把我们常见的数据,分成不同类型
不同类型分配的内存大小是不同的,这个大小的单位就是字节Byte
拓展:常用的转换关系:
位 bit,来自英文bit,音译为“比特”,表示二进制位。
1 Byte = 8 Bits (1字节 = 8位)
1 KB = 1024 Bytes 1 MB = 1024 KB 1 GB = 1024 MB
练习:查看基本类型的最大值与最小值
package cn.tedu.basic;
/**本类用于测试基本类型*/
public class TestTypeScope {
//1.创建程序的入口函数
public static void main(String[] args) {
/**1.整形类型:byte short int long*/
/**2.Java给8大基本类型都提供了类型对应的“工具箱”*/
/**3.int类型的工具箱比较特殊,叫做:Integer*/
//2.定义对应类型的变量:格式:类型 名字 = 值 ;
byte byteMin = Byte.MIN_VALUE;
byte byteMax = Byte.MAX_VALUE;
System.out.println("byte类型的最小值为:" + byteMin);
System.out.println("byte类型的最大值为:" + byteMax);
short shortMin = Short.MIN_VALUE;
short shortMax = Short.MAX_VALUE;
System.out.println("short类型的最小值为:" + shortMin);
System.out.println("short类型的最大值为:" + shortMax);
int intMin = Integer.MIN_VALUE;
int intMax = Integer.MAX_VALUE;
System.out.println("int类型的最小值为:" + intMin);
System.out.println("int类型的最大值为:" + intMax);
long longMin = Long.MIN_VALUE;
long longMax = Long.MAX_VALUE;
System.out.println("long类型的最小值为:" + longMin);
System.out.println("long类型的最大值为:" + longMax);
/**4.浮点类型 :float double*/
float floatMin = Float.MIN_VALUE;
float floatMax = Float.MAX_VALUE;
System.out.println("float类型的最小值为:" + floatMin);
System.out.println("float类型的最大值为:" + floatMax);
double doubleMin = Double.MIN_VALUE;
double doubleMax = Double.MAX_VALUE;
System.out.println("double类型的最小值为:"+ doubleMin);
System.out.println("double类型的最大值为:"+ doubleMax);
/**5.boolean布尔类型只有两个值true与false
* 虽然true和false不是关键字,但是也不可以用作标识符*/
boolean b1 = true;
boolean b2 = false;
/**6.测试char 字符类型
* 字符型的数据需要使用单引号 ' ' 来包裹
* char类型可以存数字,但是会从ASCII码表查出这个数字对应的字符来打印
* 128~65535这些数字,也可以保存,但是eclispe一般显示为?*/
char c1 = 'a';//字符型可以保存一个字母
char c2 = '中';//字符型还可以保存一个汉字
char c3 = '7';//字符型可以保存一个字符7
char c4 = 97;//字符型可以保存数字,但是会查ASCII,打印的是字符a
char c5 = 55;//字符型可以保存数字,但是会查ASCII,打印的是字符7
char c6 = 199;
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
}
}
2.类型转换
口诀:小转大,直接转 大转小,强制转 浮变整,小数没
注意:布尔类型不参与类型转换
注意:基本类型之间能否转换,不取决于字节数,字节数只能做参考,取决于类型的取值范围
注意:我们这里所说的是基本类型之间的转换,引用类型之间的转换取决于是否有继承关系
比如:你可以说小猫是小动物,但是不能说小猫是小汽车,不然后面的这种错误的情况会报:类型转换异常
3.引用类型
除了基本类型以外的所有类型都是引用类型
4.字面值规则
- 整数类型的字面值类型是int
- 浮点类型的字面值类型是double
- byte short char 三种比int小的类型,可以在范围内直接赋值
- 三种字面值后缀 : L D F
- 三种字面值前缀: 0b-二进制 0-八进制 0x-十六进制
package cn.tedu.basic;
/*本类用于测试类型的前缀*/
public class TestTypePre {
public static void main(String[] args) {
//10-2 10-1 10-0
System.out.println(100);//100-10的平方
//操作二进制-0b
//2-2 2-1 2-0
System.out.println(0b100);//4-2的平方
//操作八进制
//8-2 8-1 8-0
System.out.println(0100);//64-8的平方
//操作十六进制
//16-2 16-1 16-0
System.out.println(0x100);//256-16的平方
}
}
5.运算规则
1.计算结果的数据类型,与最大数据类型一致
System.out.println(3/2);//1,int/int,得到的结果类型还是int
2.byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a = 1;
3.整数运算溢出
整数运算,类似于一个钟表,转到最大时,再转会回到最小。
计算:光速运行一年的长度是多少米?3亿m/s
//溢出的现象:
4.浮点数运算不精确
1-0.8 (这是一个现象,后续会提供解决方案)
5.浮点数的特殊值
Infinity 无穷大 3.14/0
三、运算符
1.概述
运算符 用于连接 表达式 的 操作数,并对操作数执行运算。
例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。
在java语言中,运算符可分为5种类型:
算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。
单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。
2.运算符速查表
练习:测试自增自减
package cn.tedu.basic;
/**本类用于测试取余运算符*/
public class TestOperator {
//0.创建程序的入口函数main
public static void main(String[] args) {
//1.测试除法与取余数
System.out.println(25 / 10);//2
System.out.println(25 % 10);//5
//2.练习1:获取一个两位数59的十位与个位
int x = 59;
System.out.println(x/10);//打印十位,5
System.out.println(x%10);//打印个位,9
//3.练习2:获取一个三位数159的百位、十位与个位
int y = 159;
System.out.println(y / 100);//打印百位
System.out.println(y / 10 % 10);//打印十位
System.out.println(y % 10);//打印个位
//4.测试自增自减运算符
/** 前缀式:符号在前:++a --a ,先改变变量本身的值,再使用,比如打印
* 后缀式:符号在后: a++ a--,先使用,再改变变量本身的值
* ++:相当于给变量本身的值+1
* --: 相当于给变量本身的值-1*/
System.out.println("我是一个无情的分界线");
/**普通的四则运算并不会改变变量本身的值
* 自增自减运算符才会改变变量本身的值*/
int z = 1;
System.out.println(z+4);//5
System.out.println(z);//1
int a = 1;
System.out.println(++a);//2
System.out.println(a);//2
int b = 1;
System.out.println(b++);//1
System.out.println(b);//2
int c = 1;
System.out.println(--c);//0,符号在前,先自减,再打印
System.out.println(c);//0,上面已经自减过了
int d = 1;
System.out.println(d--);//1,符号在后,先打印,再自减
System.out.println(d);//0,打印过后,自减成0
//之前的代码会对后面的代码产生影响,c的值是0
System.out.println(c);//0
System.out.println(--c-c-c--);//1,-1-(-1)-(-1)=1
System.out.println(c);//-2,经历了两次自减,所以0-2=-2
}
}