一.Helloworld程序
1.编写java源程序的步骤:
●创建ava的源文件(源文件:就是写ja代码的文件)名称是 HelloWorld, java
●在源文件中定义一个java类…定义类的关键字class
●在类体里面定义一个main方法(主方法),是程序运行的入口
●在mian方法体里面写了一条输出语句
2.运行java程序的步骤
●通过jdk提供的JAVA.exe这个小工具把java源文件编译成字节码文件
●通过jdk提供的java.exe这个小工具来执行前面编译好的字节码文件
3. HelloWorld程序的注意事项
●用 javac.exe对java源文件进行编译的时候,要加上源文件的后缀名 编译命令: javac Helloworld .java
●用java.exe执行字节码文件的时候,不需要加上字节码文件的后缀名 运行命令:java Helloworld
●执行命令的过程中是严格区分大小写的!!!
4.执行程序过程中的常见错误
●文件扩展名藏导致译失败+
●cass写 错Class claas
●类格式有问问题,类名和文件名不一致
●类名后面的大括号匹配不正确
●main方法格式错误 pubic static void main(String []args){}
●main方法大括号缺失
●打印语句拼写错误 System.out.printin(""):
●引号使用错误,使用成中文全角引号
//第一行的第三个单词必须和所在的文件名称完全一样
//public class后面代表定义一个类的名称,类是Java当中所有源代码的基本组织单位
public class Helloworld {
//第二行的内容是固定的写法,代表main方法
//这一行代表程序执行的起点
public static void main(String[] args){
//第三行代表打印输出语句
System.out.println("Hello,World")
}
}
二.基本语法
1.关键字(32 其中两个叫做保留字)
1.1.关键字特点
组成关键字的字母全部小写
1.2关键字注意事项
goto和const作为保留字存在,目前不使用
一般高级的记事本( notepad++),针对关键字有特殊的颜色标记,丰常直观
1.3保留字
在JDK的新版本中可能提升为关键字的特殊字符就叫做保留字
Notepad++演示颜色标记java关键字
注意:Java中的关键字不能被用作方法名或类名
2.标识符
2.1.概述
给类,接口,方法,变量等起名字时使用的字符序列
2.2.组成规则(硬性规则)
①英文大小写字母②数字字符③$和_
2.3.注意事项
☝不能以数字开头
☝不能作为Java中的关键字
☝严格区分大小写
2.4.标识符的常见命名规范
♛包(其实就是文件夹,用于解决相同类名问题,比方说同一个文件夹下不能有两个相同的类)
单级 abc
多级 com.abc
多级现形式: com文件夹下有一个abc文件夹
注意:包名要全部小写,不能大写!大写的话不会报错、但是不入流!
♛类或者接口
一个单词的类 Person(首字母大写)
两个单词的类 Person Test(每个单词的首字母都要大写)
♛方法和变量
一个单词main(首字母小写)
mainMethod (第一个单词首字母小写、第二个要大写)
♛常量
一个单词PI(全部大写)
两个单词 MAX_NUMBER(全部大写、并且单词和单词之间用下划线隔开)
3.注释
3.1.概述
用来解释说明程序的文字
3.2.注释的分类
☝单行注释:格式为 //注释内容
☝多行注释:格式为 /*注释内容*/(多行注释不能嵌套)
☝文件注释:格式为 /**注释内容*/
♛对于单行注释和多行注释,被注释的文字,不会被JVM(java的虚拟机)解释执行
♛对于文档注释,是java特有的注释,其中注释的内容可以被JDK提供的工具javadoc所执行
4.常量
4.1.概述
在程序执行过程中其值不会发生改变的量
4.2.常量分类
☝字面值常量
❤字符串常量 :用双引号(英文的) 括起来的内容(“feicui")
❤整数常量 :所有整数(12 23)
❤小数常量(浮点数常量): 所有小数 12.34 56.78
❤字符常量 :用单引号括起来的内容 ‘a',’A',‘0’
❤布尔常量: 较为特有,只有ture和false
❤空常量: null(数组部分讲解),代表没有任何数据
☝自定义常量
// Const是常量的意思
public class Demo01Const{
public static void main(String[] ages){
//字符串
System.out.println("ABC");
System.out.println("");//字符串两个双引号中间内容为空
System.out.println("DEF");
//整数常量
System.out.println(30);
//浮点数常量
System.out.println(3.14);
//字符常量
System.out.println('6');//两个单引号中间必须有且仅有一个字符,没有不行,两个及两个以上也不行
//布尔常量
System.out.println(ture);
System.out.println(false);
//空常量,其不能直接打印输出空常量
}
}
5.数据类型
5.1.分类:
☝基本数据类型:
★整数型:byte short int long
★浮点型:float(单精度) double(双精度)
★字符型:char
★布尔型:boolean
☝引用数据类型:字符串,数组,类,接口,Lambda
注意:
●Java中的默认类型:整数类型是int,如果一定要使用long,需要加上一个后缀FL
浮点类型是double,如果一定要使用float,需要加上一个后缀F
●字符串不是基本类型,而是引用类型
●浮点型可能只是一个近似值,并非精确的值
●数据范围与字节数不一定相关。例如:float数据范围比long广,但是float是4字节,long是8字节
6.变量
6.1.概述
程序运行期间,内容可以发生的量
6.2.创建一个变量并且使用的格式
★数据类型 变量名称;——创建了一个变量
变量名称 = 数据值;——赋值
★数据类型 变量名称 = 数据值;——在创建一个变量的同时,立刻放入指定的数据值
public class Demo02Variable{
public static void main(String[] args){
//创建变量
int num1;
//向变量中存入一个数据
num1 = 10;
System.out.println(num1);
//改变变量当中本来的数字,变成新的数字
num1 = 20;
System.out.println(num1);
//一步到位的格式
int num2 = 25;
System.out.println(num2);
}
}
6.3.注意事项
▷如果创建多个变量,那么变量之间的名称不可以重复
▷没有进行赋值的变量,不能直接使用
▷变量使用不能超过作用域的范围(作用域:从定义变量的一行开始,一直到直接所属的大括号结束为止)
7.数据类型转换
▷对于float和long类型来说,字母后缀F和L不要丢掉
▷如果使用byte或short类型的变量,那么右侧的数据值不能超过左侧类型的范围
当数据类型不一样时,将会发生数据类型转换
7.1.自动转换(隐式)
◆特点
代码不需要进行特殊处理,自动完成
◆规则
数据范围从小到大
public class Demo01DateType{
public static void main(String[] args){
System.out.println(1024);//这是一个整数,默认为int类型
System.out.println(3.14);//这是一个浮点数,默认为double类型
//左边是long类型,右边默认是double类型,左右不一样
//一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行储存
//int-->long,符合数据范围从小到大的要求
//这一行代码发生了自动转换类型
long name1 = 100;
System.out.println(name1);//100
//左边是double类型,右边float类型,左右不一样
//double-->float,符合数据范围从小到大的要求
//这一行代码发生了自动转换类型
double name2 = 2.5;
System.out.println(name2);//2.5
}
}
7.2.强制类型转换(显式)
◆特点
代码需要进行特殊处理,不能自动完成
◆格式
范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据
public class Demo02DataType{
public static void main(String[] args) {
//int num = 100L;错误!!!
int num = (int) 100L;
System.out.println(num);
}
}
◆注意事项
◆强制类型转换一般不推荐使用,因为可能发生精度损失,数据溢出
public class Demo03DataType{
public static void main(String[] args) {
//long强制转换为int
int num = (int) 6000000000L;
System.out.println(num);//1705032704
//double-->int 强制类型转换
int num3 = (int) 3.99;
System.out.println(num3);//3 这并不是四舍五入,所有小数位都会被舍弃掉
}
}
◆byte/short/char这三种类型都可以发生数学运算,例如:加法“+”
(一旦char类型进行了数学运算,那么字符会按照一定的规则翻译成为一个数字)
public class Demo03DataType{
public static void main(String[] args) {
char zifu1="A";
System.out.println(zifu1);//A
System.out.println(ZIFU1+1);//66 大写字母A被当做65进行处理
//计算机的底层会用一个数字(二进制)来表示字符“A”
}
}
◆byte/short/char这三种类型在运算时,都会被首先提升为int类型,然后进行计算
public class Demo03DataType{
public static void main(String[] args) {
byte nume1 = 40;
byte nume2 = 50;
//byte+byte-->int+int-->int
int result1 = nume1 + nume2;
System.out.println(result1); //90
}
}
◆boolean类型不能发生数据类型转换
8.运算符
运算符:进行特定操作的符号
表达式:用运算符连起来的式子叫做表达式
8.1.算术运算符
8.1.1四则运算
加:+
减:-
乘:*
除:/
取模(取余):%
public class Demo04Operator {
public static void main(String[] args) {
//两个常量之间可以进行数学运算
System.out.println(20+30);
//两个变量之间也可以进行数学运算
int a = 10;
int b = 20;
System.out.println(a-b);//-10
//变量和常量之间可以混合使用
System.out.println(a*10);//100
//被除数 / 除数 = 商 ...余数
//对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果任然是整数,只看商,不看余数,只有对于整数的除法来说,取模运算符,才有余数的意义
int x = 10;
int y = 3;
int result1 = x / y;
System.out.println(result1);//3
int result2 = x % y;
System.out.println(result2);//1
}
}
8.1.2注意事项
①一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种
8.1.3加法的多种运算
对于数值来说,是加法
对于字符char类型来说,在计算之前,char会被提升为int,然后再计算。char类型字符,和int类型数字之间的对照关系表:ASCII,Unicode
对于字符串String((首字母大写)并不是关键字),加号代表字符串的连接操作,任何数据类型和字符串进行连接时,结果都会变成字符串
public class Demo05Plus {
public static void main(String[] args) {
//字符串类型变量的基本使用
//数据类型 变量名称 = 数据值;
String str1 = "hello";
System.out.println(str1);//hello
System.out.println("hello"+"world");//helloworld
String str2 = "java";
//String + int-->String
System.out.println(str2+20);//java20
//优先级问题
//String+int+int
//String +int
//String
System.out.println(str2+20+30);//jiva2030
System.out.println(str2+(20+30));//java50
}
}
8.2.自增自减运算符
1.自增运算符:++
2.自减运算符:--
3.基本含义:让一个变量涨(降)一个数字1
4.使用格式:写在变量名称之前,或者写在变量名称之后。例如:++num,也可以num++
5.使用方式:
单独使用:不和其他任何操作混合,自己独立成为一个步骤
混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合等
6.使用区别
在单独使用的时候,前++和后++没有任何区别。也就是++num与num++是完全一样的
在混合使用的时候,有【重大区别】
a.如果是【前++】,那么变量【立刻马上加1,然后拿着结果进行使用】【先加后用】
b.如果是【后++】,那么变量首先使用变量本来的值,然后再让变量加1【先用后加】
7.注意事项
只有变量才能使用自增自减运算符,常量不可以使用++ --
public class Demo06Plus {
public static void main(String[] args) {
int num1 = 10;
System.out.println(num1);//10
++num1;//单独使用,前++
System.out.println(num1);//11
num1++;//单独使用,后++
System.out.println(num1);//12
//与打印操作混合使用
int num2 = 20;
//混合使用,先++,变量立马变成21,然后打印结果21
System.out.println(++num2);//21
System.out.println(num2);//21
int num3 = 30;
//混合使用,后++,首先使用变量原来的30,然后再让变量加一得到31
System.out.println(num3++);//30
System.out.println(num3);//31
int num4 = 40;
//与赋值操作混合使用
//混合使用,前--,变量变为39,然后将结果交给result1
int result1 = --num4;
System.out.println(result1);//39
System.out.println(num4);//39
int num5 = 50;
//混合使用,后--,先将本来的数字50交给result2,然后再减1变成49
int result2 = num5--;
System.out.println(result2);//50
System.out.println(num5);//49
int x = 10;
int y = 20;
int result3 = ++x + y--;
System.out.println(result3);
System.out.println(x);
System.out.println(y);
}
}
8.3.赋值运算符
8.3.1分类
基本赋值运算符:就是一个“=”,代表右侧的数据交给左侧变量
☝ int a = 30;
复合赋值符运算符:
☝ += a += 3 相当于 a = a + 3
☝-= b -= 4 相当于 b = b - 4
☝*= c *= 5 相当于 c = c * 5
☝/= d /= 6 相当于 d = d / 6
☝%= e %=7 相当于 e = e % 7
public class Demo07Operator {
public static void main(String[] args) {
int a = 10;
a += 5;//按照公式进行翻译:a = a + 5
System.out.println(a);//15
int x = 10;
x %= 3;
System.out.println(x);//1
}
}
8.3.2注意事项
只有变量才能使用赋值运算符,常量不能进行赋值
复合赋值运算符其中隐含了一个强制类型转换
8.4.比较运算符
大于 >
小于 <
大于等于 >=
小于等于 <=
相等 ==
不相等 !=
public class Demo08Operator {
public static void main(String[] args) {
System.out.println(10>5);//ture
int num1 = 10;
int num2 = 12;
System.out.println(num1 < num2);//ture
System.out.println(num2 >= 100);//false
System.out.println(num2 <=100);//ture
System.out.println(10==10);//ture
System.out.println(20!=25);//ture
}
}
8.4.1注意事项
比较运算符的结果一定是一个布尔值,成立就是ture,不成立就是false
如果进行多次判断,不能连着写。 数学中的写法,例如1<x< 10,程序当中不允许
8.5.逻辑运算符
1.与(并且): && 全都是 ture,才是ture; 否则就是false
2.或(或者): || 至少一个是 ture就是ture; 全都是 ture,才是ture。全都是false,才是false
3.非(取反): ! 本来是ture; 变成false;本来是false; 变成ture
public class Demo09Operator {
public static void main(String[] args) {
System.out.println(true && false);//false
System.out.println(3 < 4 && 10 > 5);//true
System.out.println(true || false);//true
System.out.println(true || true);//true
System.out.println(false || false);//false
System.out.println(true);//true
System.out.println(!true);//false
}
}
与“&&”或“||”,具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边代码将不在执行,从而节省一定的性能
4.注意事项
逻辑运算符只能用于布尔值
与.或需要左右各有一个布尔值,但是取反只要有唯一的一个布尔值即可
与,或两种运算符,如果有多个条件,可以连续写
☝两个条件: 条件A &&条件B
☝多个条件: 条件A &&条件B &&条件C
8.6.三元运算符
一元运算符
只需要一个数据就可以进行操作的运算符。例如:取反!,自增++,自减--
二元运算符
需要两个数据就可以进行操作的运算符。例如:加法+,赋值=
三元运算符
格式
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B
流程
判断条件是否成立
若成立为ture,那么表达式A的值赋值给左侧的变量;若不成立为false,那么表达式B的值赋值给左侧的变量,二者选其一
public class Demo10Operator {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = a > b ? a : b;// 最大值变量
System.out.println(max);//20
}
}
注意事项
必须同时保证表达式A和表达式B都符合左侧数据类型的要求
三元运算符的结果必须被使用