Java语言特点:
简单性:(面向对象语言:后期使用类:类中有什么功能:不断地创建对象,指挥对象做事)
健壮性:Java的设计模式
分布式:硬件的支持--->服务器集群
“大型项目”---成本非常高
开源:开发源代码
将最基本的Java所设计的常用核心类/接口---以及扩展类/扩展接口,提供给开发者使用
开发者需要研究
这些类或者接口中有什么功能(方法)
跨平台:跨操作系统 (需要Jvm: java虚拟机)
一个Java文件---编译一次,就可以在任何操作系统上运行(linux, Windows, Mac)
Java的平台版本
JavaSE:针对桌面应用程序开发
JavaME:针对嵌入式设备提供的解决方案
Android:基于Javase的
手机app端:混合开发,非纯Android开发
JavaEE:(后期的重点研究方向)
针对企业开发提供的一套解决方案
最基本的原生框架:servlet , jsp(java server page)
关键字: 被Java语言赋予特点含义的单词
关键字的字母都是小写!
1)Java中最基本的单元“类”
书写格式:class 类名{ }
2)public:公共的,公开的:权限很大
权限修饰符
public :现在目前使用这个
private:私有的
默认修饰符
protected:受保护的
3)static:静态修饰符
面向对象讲解:被静态修饰的----“共享,共用”
跟类的加载机制有关系
4)void:格式是和Java中方法的定义相关 (本周讲“方法”的时候讲)
5)数据类型:
基本数据类型:都是关键字
6)流程控制语句中:选择结构,循环结构等存在关键字;
标识符:在Java语言中,给类/接口/变量,给方法取名字的字符序列!
起名字的时候,字符序列的组成规则:
1)26个英文字母(大小写均可)
2)可以是数字字符
3)可以是$符号
4)可以是下划线_
注意:
1)标识符可以是数字,但不能以数字开头
2)标识符不能是Java中关键字
3)Java严格区分大小写(Java语言是一种”强类型“:语法结构非常严谨)
给类和接口起名字一致;
如果是单个单词:单词首字母大写,其余小写
举例:jdk提供的这些类:class Socket{ }
class Demo{ }
如果是多个单词:遵循”大驼峰命名法“
每个单词首字母都大写,其余小写
给变量和方法起名字符序列一致:
如果是单个单词:单词全部小写
举例:int num = 10 ;
如果是多个单词:遵循”小驼峰命名法“
第一个单词全部小写,从第二个单词首字母大写,其余小写
int applePrice = 5 ;
给常量命名:(Java源码:一般都是多个单词)
如果是单个单词:字母全部大写
如果是多个单词:每个单词字母全部大写,中间使用下划线隔开
Java常用类:Integer: int类型的包装类类型
MIN_VALUE:最大值
MAX_VALUE:最小值
JavaSE高级部分:多线程 Thread
优先级的常用字段:
字段摘要:
MAX_PRIORITY
线程可以具有的最高优先级。
MIN_PRIORTY:最低优先级
MORM_PRIORITY:默认优先级
常量:程序执行过程中,其值固定不变的值!
分类:1)字面值常量;
字符串常量:双引号包含
字符常量:单引号包含 ’a‘ ‘A’ ’0‘
字符常量不参与运算:它就是固定的字符
参与运算:ASCII码表中代表一个数值
‘a’=97 ‘A’=65 ‘0’=48
整数常量:进制也属于常量
小数常量:
boolean常量:true / false
空常量:null 应用在“引用数据类型”的默认值
2)自定义常量:跟关键字final有关
变量:在程序的执行过程中,其值发生改变的量!
变量的三要数:
1)数据类型---“一种类型”
2)变量名称---“符合标识符规则”
3)初始化值---“根据数据类型,给变量取值”
数据类型:
基本数据类型:
整数型: byte: 字节类型 1个字节 范围-128~127
short:短整型 2个字节
int: 整数默认类型 4个字节
long: 长整型 8个字节 (定义系统时间---换算毫秒值)
long 类型输出,在末位加l;
浮点型: float:单精度 4个字节
double: 双精度 8个字节 场景:商品价格
(针对小数的精确计算:Java提供的类:Bigdecimal)
布尔型: 不会进行类型转换,仅仅表示逻辑判断,结果为true或false
boolean:
字符型: char:占两个字节
gbk(中文编码表)
gb2312(gbk升级版)
big-5大五码(繁写字码)
utf-8:一个中文对应三个字节
iso-8859-1:拉丁文名码表(考虑都是英文) JS:日本系统码表
引用数据类型:
数组(基本类型,引用类型),类(具体类,抽象类),接口
int [ ] arr
String [ ] args
定义变量的注意事项:
1)目前来说:我们定义的“局部变量”
在方法定义在或者方法什么上的变量
2)
a)先定义,在使用前取赋值
如果没有报错,系统“可能尚未初始化变量”
b) 直接给变量初始化
3)Java是强类型语言,不能重复定义变量
4)定义变量:推荐格式:一行定义一个变量
也可以一行定义多个变量
Java中的隐式类型转换:默认类型替身;
byte,short,char三者之间不转换,一旦参与运算,先提升为Intl类型’
基本数据类型,除了boolean不参与运算!
其它变量在运型运算的时候,需要保持数据类型一致!
Java中的强制类型转换:
目标类型 变量名 = (目标类型)(初始化值)
强制类型:不仅适用于基本类型,也适用于引用类型
没有特别要求不适用,因为造成数据的精度损失!
运算符:
赋值运算符:=
扩展的赋值运算符: +=, / -=, / *=, / /=, %=
算术运算符:+, -, *, /, %
拓展的算术运算符:++, --
场景:统计 / 循环语句中使用
举例:水仙花:100~999之间
++ / -- 单独使用:在前在后结果一样
++ / -- 参与运算:在前先自加或自减后再参与运算
在后先参与运算后再自加或自减
比较(关系)运算符:<, >, >=, <=, ==, !=
逻辑运算符: & :逻辑单与:全true为true,有false为false
| : 逻辑单或: 全false为false,有true为true
^ : 逻辑异或:相同false,不同为true 应用:性别
! : 逻辑非: 取相反结果 应用:登录,非用户名提示输入错误或未注册
应用场景:
当某种条件不满足:
String的equals()方法:判断两个字符串内容是否相同
== :基本数据类型进行比较(数据值)
!“admin” .equals (“eric”): Java提供的方法
扩展的逻辑运算符
&&:逻辑双与:
与逻辑单与&的区别:
共同点:当多个条件,有false则false,并且关系;
不同点:逻辑单与&,无论符号左边是否成立,右边都执行;
逻辑双与&&,具有短路效果,符号左边不成立,右边不执行;
逻辑性更强
| | : 逻辑双或:
与逻辑单或|的区别:
共同点:当多个条件,有true则true,或关系;
不同点:逻辑单或| ,无论符号左边是否成立,右边都执行;
逻辑双或||,具有短路效果,符号左边成立,右边不执行;
逻辑性更强
位运算符:针对具体的数据值进行运算
位与& : 有0则0;
位或 | : 有1则1;
位异或^: 相同为0,不同则为1;
反码~ :0变1,1变0,不分符号位;
<<左移
>>右移
>>>无符号位移
三目(三元)运算符:
表达式:(表达式) ?值1 (true) :值2 (false)
执行流程:
1)首先判断表达式是否成立
2)如果成立,执行成立的结构
3)如果不成立,就执行false的结果
与if的区别:三元运算符是针对变量值进行操作,
if else :范围比三元运算符大,能使用if else语句但不一定能用三元;
但能用三元运算符的,一定能使用if else语句;
键盘录入数据
1)导包
2)创建文本扫描器对象
3)提示并录入数据
4)接收并使用数据(根据具体需求)
注意:录入的数据类型与接受的数据类型要一致;
其中关于int与String的先后顺序,先String后int无问题
但先int后String会出现问题,原因“空格”算一个字符;
解决方式两种:1)int在前时,在String录入前再次建立一个扫描器;
2) 用String b = sc.next(); 来接收数据
流程控制语句
三大类:
顺序结构语句:(最基本的语句)
代码从上而下依次加载(源顺序)
选择结构语句
if语句(三种模式:开发中:第二种格式)
第一种格式:针对单个条件进行判断
if(表达式){
语句
}
执行流程:首先判断表达式是否成立
如果成立,则执行语句;
如果不成立,不会执行!
注意事项:if后面不能有分号;
里面是单条语句,可以省略{ },但不建议省略;
第二种格式:针对两个条件进行判断:if else
if(表达式){
语句1
}else{
语句2
}
执行流程:首先判断表达式是否成立;
如果成立,执行语句1;
如果不成立,执行语句2;
第三种格式:针对多个条件进行判断:if else
if(表达式){
语句1
}else if{
语句2
}else{
语句3
}
执行流程:首先判断表达式是否成立;
如果成立,执行语句1;
如果不成立,执行语句2;
再不成立,执行语句3…….
switch语句
格式:switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
case 值3:
语句3
break;
}
执行流程:
首先表达式接收一个值
然后和case语句值1比较,如果成立,执行语句1,break结束switch;
如果与值1不匹配,则判断和值2是否匹配,匹配成功,执行语句2,break结束;
如果与值2不匹配,继续判断和值3是否匹配,匹配成功,执行语句3 …….
注意事项:
1)case语句的后面只能是一个常量;
2)break语句(结束,中断):不要轻易省略掉,会造成case穿透现象,若没有终止, 会一直执行后续程序;
3)Switch语句的结束条件: a) break语句结束; b) 执行到末位;
4)default语句可以在switch语句中的任何位置,不影响执行流程;
当前case后面的都匹配,执行default语句
如果default语句在语句中的话,break语句不能省略;
如果default语句在switch末位的话,break语句是可以省略;
循环结构语句
for(使用居多):普通for循环
循环格式:
for(1初始化语句;2条件语句;4步长语句(控制体语句)){
3循环体语句;
}
流程:
1)初始化语句给当前循环中的变量赋值:执行一次;
2)接下来执行条件语句,判断条件语句是否成立;
3) 如果条件语句结果成立:true,执行3)循环体语句
4)执行控制体语句++/--;
5)继续去判断条件语句是否成立;
6)成立则继续执行循环体语句…..
7)当条件语句不成立,for循环结束;
for循环嵌套:
for(初始化语句,条件表达式1;控制体语句1){
for(初始化语句2;条件表达式;控制体语句2){
}
}
内层循环作为外层的循环体语句!
流程:
初始化
while(其次while)
初始化语句;
while(条件表达式){
循环体语句;
控制体语句;
}
执行流程:
初始化语句:给变量赋值
当前条件表达式成立,执行循环体语句;
继续控制体语句,再次执行条件表达式;
。。。。。。。
当条件表达式不成立时,结束循环;
do-while循环语句格式
初始化语句;
do{
循环体语句;
控制体语句;
}while(条件表达式);
应用场景:开发中很少用,源码中会有;
与for , while 的区别,就算条件表达式不成立,循环体语句至少会执行一次;
for循环和while循环的最大区别:
1)应用场景区别:是否明确循环次数,明确用for,不明确用while;
2)格式---(内存角度) for优于while
for循环结束之后,不能够访问到for循环中的变量;
循环结束后,变量(内存中变量,临时变量)就回收了
while循环:由于存在初始化语句是在while在外面定义的;
所以当while结束后,能够访问到while循环中的变量
死循环:就是循环语句没有结束条件!条件表打式----恒成立
推荐使用while;
跳转控制的语句
三种
break; 中断,结束的语句,不能单独使用,只能在switch语句和循环中使用;
循环语句(looper)或者switch语句中使用
continue :
结束当前循环,进入下一个循环;
不能单独使用,只能在循环中使用;
return: 也属于跳转控制语句;结束方法的;
需要结合有具体返回值类型的使用;很少单独使用;
Java中的方法
1)有返回值类型的方法的定义与使用
什么是方法(函数):将某一个业务逻辑使用{ }包起来,然后起名字---->符合“方法定义规则”
Java语言中:如何定义一个方法:
有具体返回值类型的方法定义
格式:固定写法:
public static 返回值类型 方法名称(形式参数类型1 变量名1, 形式参数类型
2; 变量名2……..)
需要通过业务逻辑
return 结果数据
有返回值类型的方法定义解释说明:
public: 公共的,公开的 , 权限修饰符
static: 静态的
返回值类型:数据类型
方法名称:符合“标识符”的规则,小驼峰
形式参数列表:
形式参数类型1 变量名1 ,形式参数类型 变量名2……
形式参数类型:数据类型
变量名:符合“标识符”规则,小驼峰
方法体中{ }---->携带一个关键字return,结束当前这个方法并且有一个结果;
注意事项:
有返回值类型的方法的调用
单独调用:没有意义:在功能模块中,有返回值类型业的方法:业务,返回结果!
在调用者位置输出---main方法中调用这个方法;
输出调佣:可以用:不建议,相同获取的结果数据在进行操作,无法操作!
赋值调用:主推荐
定义方法的注意事项:
1)方法与方法是平级关系,只能调用,不能嵌套;
2)定义方法需要明确:a.明确返回值类型;b.明确参数类型及参数个数;
3) 方法的形式参数必须携带数据类型,否则报错(Java是强类型语言);
4)返回结果类型需要和最终的接受结果类型一致;
保证方法中的类型一致;
保证:接受的结果类型与返回的数类型一致
2)没有返回值类型的方法的定义与使用
固定格式:
public static 返回值类型 方法名 (形式参数1 变量名1,形式类型2 变量2){
业务
获取结果
}
解释说明:public static 固定写法
void : 关键字
Java中规定:针对没有具体返回值的结果的时候,但是方法中必须“返回值类型”
void 代替“返回值类型”,满足格式要求;
两个明确:
明确返回值类型:如果没有结果:void代替;
明确参数类型及参数个数;