1.发展历史
Java中之父:詹姆斯·高斯林。 1995年:正式推出了Java。 Java平台版本 JavaSE:针对桌面应用程序开发。 JavaME:针对嵌入式设备提供解决方案:针对移动端:Android。 JavaEE:针对企业级开发提供的解决方案。
2.计算机的组成:软件和硬件
软件:由特定计算机的数据和指令的集合。 分为:系统软件和应用软件
3.常用的Dos指令
进入dos的方式:windows键+r 盘符切换 盘符号: D:\>

进入指定单级目录:cd 目录名称

回退上一级目录:cd..

回退根目录:cd \

创建目录:md 需要创建的目录名称

创建文件:copy con 文件名称---按“回车键”---进入编辑模式---编辑文件内容,----按ctrl+z:退出编辑模式----按回车健,文件保存并且退出。

删除文件:del (删除单个文件)文件名称

删除带内容的目录:rd /s 目录名称 删除带内容的目录(循环) rd /s /q 目录名称 暴力删除 清屏命令:cls 清空当前目录。 ipconfg:查看ip地址 ipv4 ping 域名或者ip地址:查看自己本机是否能够联网 。
4.Jvm,Jre,,Jdk
Jvm:java虚拟机。
Jdk:Java开发工具包,包含了Jre和一些工具。
Jre:java运行环境,包含了jvm和运行时需要的一些核心类库。
JDK下载地址:oracle官网。
javac.exe:编译指令。
Java.exe:运行指令。
编译Java源文件。
class HelloWorld(类名建议和文件的名称一致){ 编写HelloWorld类
//main方法:程序的入口 Jvm能够识别这个方法:固定格式
public static void main(String[] args){
//不要使用中文符号,都是英文符号
//中间"字符串值"
System.out.println("Hello World...") ;//固定的写法: 变化的里面的字符串内容
}
}
5.path环境变量的配置
配置Java环境变量的理由:
因为我们的代码都不可能放到JDK安装目录的bin里面去写,当Java文件很多的时候,一些Java文件不需要了,删除这些Java文件,可能会造成.exe被删除,jdk就会存在问题。
path环境变量的执行流程:
1)现在指定的(当前java文件所处的目录)去找,如果存在这个java文件,进行编译,使用java指令运行即可
2)如果当前目录中找不到java文件,就会在path环境变量去找。
配置环境变量的方式:
1. win10/win8/win7---->此电脑----->右键,选择属性----->找到"高级系统设置"---->环境变量
---->系统变量---->新建
变量名:JAVA_HOME
变量值:Jdk的安装目录 D:\Jdk\Java\jdk1.8.0_162
2.win10/win8/win7---->此电脑----->右键,选择属性----->找到"高级系统设置"---->环境变量
---->系统变量---->path环境变量:将jdk安装目录的bin目录复制进去:
D:\develop_software\Java\jdk1.8.0_162\bin (将这个路径放在path最前面)。
6.Java中的注释、关键字、标识符
1.注释:提高代码的阅读性,针对一些代码进行解释说明
//单行注释
/*
多行注释
*/
/**
文档注释:面向对象中使用 (开发中使用的文档注释)
作者
时间
*/
2.关键字;被Java语言赋予特定含义的单词(都是小写字母)
class:标记类名 :Java中的最基本单元
public:权限修饰符的一种:表示的公共的/公开的,访问权限足够大
static:静态修饰符(重要的关键字---->面向对象中讲)
void: Java定义方法(函数)的方式---->"方法"时候讲 。
3.标识符:给包,类名,接口名,变量名,方法名,常量名起名字的一个字符序列。
包:(面试对象中讲)
一般开发场景:多级包,目录和目录之间.隔开
com.qf.web(代码需要分层:需要使用包去划分)
com
qf
web
XXX.java
类名/接口名:遵循"大驼峰命名法"
单个单词:单词首字母大写,其余小写
多个单词:每个单词首字母都大写,其余小写(使用居多)
变量/方法名:遵循"小驼峰命名法"
单个单词:字母全部小写
insert()
update()
delete()
find/search/select()
多个单词:第一个单词字母小写,从第二个单词开始,每个单词首字母大写,其余小写
userLogin() 用户登录功能...
userRegister() 用户注册功能...
常量:
开发场景中:很少单个单词(字母全部大写),一般都是多个单词,单词和单词下划线隔开(字母全部大写)
自定义常量---->"面向对象中 讲final"
//网络聊天室JavaSE
//客户端发送消息: 选择了"公聊","私聊" ,服务器端如何判断公聊和私聊
自定义常量:
public static int final PUBLIC_TALK = 100 ; 公聊值
public static int final PRIVATE_TALK = 200 ;私聊值
标识符的组成规则:
1)可以是26个英文大小写字母
2)可以数字
3)可以$
4)可以存在_
注意事项:
1)标识符的定义的时候,不能以数字开头
2)不能是Java总的关键字
3)Java严格区分大小写(但是,见名知意)
7.常量
常量:程序运行过程中,其值不会发生变化的量。
分类:
1.字面值常量
字符串常量:使用"",括起来的内容
"helloworld"
字符常量 使用''括起来的单个内容
'a','A','0',这些字符一旦参与运算,就会寻找对应的ASCII码表的值
'a' ----> 97
'A' ----> 65
'0' ----> 48
整数常量
100,20,64,78,.
小数常量
3.14
布尔常量
true/false
空常量
null:针对引用数据类型来说的
2)自定义常量
public static int final PUBLIC_TALK = 100 ; //面向对象中讲static,final
整数常量中包含了进制
二进制/八进制/十进制(整数默认)/十六进制
将十进制转换任意进制:
使用当前十进制数据,除基取余,直到除到商为0为止,余数反转!
将任意进制转换十进制
位权展开法:
系数*基数的权次幂相加
0b100--->十进制
=1*2^2 + 0 * 2^1 + 0 *2^0
=4
8421码快速转换法:将十进制快速转换成二进制/二进制---十进制
二进制
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
已知二进制,将二进制数据的每一个位上1的数据,快速将它的十进制加起来---->二进制--->十进制
0b1011001 ---->十进制
=64+0+16+8+0+0+1
=89
将X进制--->Y进制
0b1011001 --- 八进制
(1)将0b1011001--->十进制 89
将数据除基取余,直到商为0为止,余数反转
89/8 = 11 1
11/8 = 1 3
1/8 = 0 1
0131
(2)进制的概念:八进制是在二进制基础上,从右到左,每三个比特位一组,左边不够的补0,分别计算出每三个比特位一组的十进制数据---->从左到右将数据组合起来,八进制
0b1011001
001 011 001
1 3 1
0131
有符号位的数据表示法----->计算机底层计算数据:都使用"补码"计算
一般:整数
正数/负数
正数的原码,反码,补码都一样
负数已知原码
最高符号位不变,数值位按位取反,0变1,1变0---->反码
最高符号位不变,在反码的末尾+1 ---->补码
已知负数的补码---->原码
在补码的基础上,末尾-1---->反码
最高符号位不变,数值位按位取反,0变1,1变0--->原码
8.变量
变量:程序运行过程中,其值一直发生变化大的量,
三要素:
变量名
数据类型,
初始化值;
格式:
数据类型 变量名 = 初始化值;
数据类型的划分:
两大类:
基本数据类型 byte:-128~127 整数默认int类型) 后面两个开发中居多(long:使用定义时间毫秒值使用居多)
整数类型:
字节类型:byte,1个字节;
短整类型:short,2个字节;
默认类型;int,4个字节;
长整类型:long 8个字节;
浮点类型:开发中使用居多double
单精度类型:float, 4个字节;
双精度类型:double 8个字节;
字符类型:char :占2个字节
布尔类型:boolean 占1个字节,不会参与运算
引用数据类型
数组,类,接口;
byte类型的取值范围,超出范围如何更正?
范围:-128~127,超出范围报错, jvm认为这个值是int类型,所以如果byte类型接收肯定报错;
解决方案:强转类型转换
byte b = 129 ; //报错
//修改
byte b = (byte)129 ;
计算--->129的原码:
00000000 00000000 00000000 10000001 ,原码,反码,补码相同,需要使用"补码"进行计算
10000001 截取后
补码
最高符号位 数值位
1 0000001
- 1
-------------------------
1 0000000
反码
原码 1 1111111
相关语法规则:
Java隐式转换(隐式类型转换)
short ,byte,char,三者不转换,一旦参与运算,先提升int类型,long,float,double....
面试题:
第一题:
byte b1=10,b2=20,b;
b=b1+b2; short ,byte,char,三者不转换,一旦参与运算,先提升int类型,long,float,double....
b = (byte)(b1+b2) ; 变量相加:先提升类型,然后在分别计算
b=10+20; 常量相加:先进行相加,然后看其结果是否在范围内
Java的强转类型转换(显示转换)
作用:将大的数据类型--->小的数据类型
目标数据类型 变量名 = (目标数据类型)(初始化值/表达式) ;
byte b1=10,b2=20,b;
b = (byte)(b1+b2) ; //强转语法
9.运算符
1.算术运算符:
基本的算术运算符:+,-,*,/,%
扩展的算术运算符:++,--(重点)
使用场景:
两种场景:
1)单独使用
无论在数据前还是或者数据后:都是对当前变量的值进行自增1或者自减1
应用场景:循环语句中有一个控制体语句(步长语句)
2)参与运算使用
在数据前:
先将当前变量本身的值进行自增1或者自减1,然后在参与运算!
在数据后:
先运算,然后变量的本身的值进行自增1或者自减1;
*/
class OperatorDemo2{
public static void main(String[] args){
//定义两个变量
int a = 3 ;
int b = 4 ;
//先输出a,b的值
System.out.println("a:"+a) ;//3
System.out.println("b:"+b) ;//4
System.out.println("----------------------------------") ;
//场景1:单独使用
//a)在数据前面
//++a ;
//--b ;
//b)在数据的后面
//a ++ ;
//b -- ;
//场景2:参与运算使用
//a)在数据的前面
//定义两个变量m,n
//int m = ++ a; //将a变量先自增1,结果赋值m
//int n = -- b ;//将b变量先自减1,结果赋值n
//b)在数据的后面
int m = a ++ ; //先将a值赋值m,m就是3,然后a进行自增1,变成4
int n = b -- ;//先将b的值赋值n,n就是4,然后将b的值进行自减1,变成3
System.out.println("m:"+m) ;
System.out.println("n:"+n) ;
System.out.println("a:"+a) ;
System.out.println("b:"+b) ;
}
}
2.赋值运算符:
无论表达式是简单还是复杂,结果为true/false
<,>,<=,>=,==,!=
注意事项:
=不能写成==,反之,==不能写成=;冲突的
扩展的赋值运算符:
+=,-=,*=,/=,%=
*/
class OperatorDemo{
public static void main(String[] args){
//定义一个变量
int a = 10 ;
System.out.println("a:"+a) ;
System.out.println("----------------------------") ;
//OperatorDemo.java:23: 错误: 需要';'
//int m == 100 ;//=写成"==":==比较运算符:比较两个数据是否相等(基本数据类型中,除去boolean类型)
//System.out.println("m:"+m) ;
}
}
+=,-=,*=,/=,%=
使用+=举例:
int a = 100 ;
a += 200 ; //将符号左边的数据和右边的数据相加,然后在将结果赋值左边的变量a
类似于:a = a + 200 ;
面试题:看程序,分析代码
short s = 1 ;
1)s = s + 1 ;
2)s += 1 ;
问:哪一句会编译失败,为什么?如何解决?
s = s+1 ; //Java中隐式类型提升:byte,shor,char三者之间不转换,参与运算时优先提升int(考点),long,float,double;
=右边是2:int类型
解决:强制类型转换
s = (short)(s+1) ;
2)s += 1 ; 扩展的赋值运算符的有特点:隐藏了强转类型转换
结果等价于: s = (short)(s+1) ;
+=,-=,*=,/=,%=
特点:隐藏了强转类型转换
*/
class OperatorDemo2{
public static void main(String[] args){
//定义一个变量
int a = 10 ;
a += 20 ;//类似于:a = a + 20 ;
System.out.println("a的值是:"+a) ;
System.out.println("-----------------------------") ;
//面试题
short s = 1 ;
//s = s + 1 ; 不兼容的类型: 从int转换到short可能会有损失 (默认类型提升:隐式转换)
//强制类型转换
//s = (short)(s+1) ;
s += 1 ; //扩展的赋值运算符
System.out.println("s:"+s) ;
}
}
3.逻辑运算符:
基本的逻辑:
逻辑单与&,逻辑单或|,逻辑异或^,逻辑非!
扩展的逻辑(开发中经常使用这两个)
逻辑双与&&,逻辑双或||
4.位运算符:
基本位运算符:位与&,位或|,位异或^,~反码(按位取反,1变0,0变1)
重点:位异或^:一个数据被另一个位异或两次,数据是它本身!
移位符号
左移:<<,
右移:>>,
无符号右移:>>>。
例题:1.
int a = 4;
int b = (a++)+(++a)+(a*10); (a++):将a的值先赋值:这个()整体
b?
*/
class OperatorTest{
public static void main(String[] args){
//定义了三个变量
int a = 10;
int b = 10;
int c = 10;
a = b++; //a=10,b=11,c = 10;
c = --a; //a=9,b=11,c=9
b = ++a; //a=10,b=10, c=9
a = c--; //a=9,b=10,c=8
//a,b,c的结果是什么
System.out.println("a:"+a+",b:"+b+",c:"+c) ;
System.out.println("-----------------------------------------") ;
//定义两个变量x,y
int x = 4; //x=4
// ++或者--参与运算时,如果在数据的后面,先运算,在去自增或者自减;
// 如果在数据的前面:先自增或者自减1,然后参与运算
//()=4: x自己本身从4自增--->5
//= 4 + 6+ (6*10)
int y = (x++)+(++x)+(x*10); //70
//():运算过程,优先级的是一个整体
System.out.println("y的值是:"+y) ;
}
}
331

被折叠的 条评论
为什么被折叠?



