目录
1.java运行环境
1.1JDK环境安装
JDK(Java Development Kit)是Java程序开发工具包,包含JRE和开发人员使用的工具。
JRE(Java Runtime Environment):是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。
JVM(Java虚拟机--->假象计算机(有自己的网络,有自己的内存))
1.1.1注意事项
在普通记事本书写java代码,默认保存的字符集utf-8 (一个中文对应是三个字节)
而dos控制台黑窗口里面的默认的字符集格式:"gbk",一个中文对应两个字节
在dos窗口中执行文件如果是"utf-8"出现乱码
1.1.2java与java指令的区别
1.1.3添加注释comment
注释:就是它对代码的解释和说明。其目的是让人们能够更加轻松地了解代码。为代码添加注释,
是十分必须要的,它不影响程序的编译和运行。
Java中有单行注释和多行注释
• 单行注释以 //开头换行结束
• 多行注释以 /* 开头以*/结束
• 文档注释以/**开头以*/结束
2.计算机基础
计算机概念:俗称"电脑",没有任何软件的计算机 "裸机"!
计算机硬件
计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。
计算机软件
• 计算机软件是使用计算机过程中必不可少的东西,计算机软件可以使计算机按照事先预定好的顺序 完成特定的功能,计算机软件按照其功能划分为系统软件与应用软件
• 系统软件: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS
• 应用软件:office QQ聊天 YY语言扫雷
2.1软件结构划分
C/S结构
Client/Server:客户端和服务器端的交互
典型特点:
客户端必须升级,才能使用 服务器高版本的功能: 比如QQ
B/S结构
Browser/Server:浏览器端和服务器端的交互
典型的特点:
只要保证计算机上有浏览器,那么就可以访问服务器高版本功能!(浏览器本地可以不升级)
2.2Dos窗口
进入方法有两种:
方法一、在Windows搜索框搜索cmd,打开命令提示符,即可进入。
方法二、win+R,输入cmd,即可进入
Dos窗口常用的指令(指令不区分大小写)
磁盘号+: //进入磁盘
cd 目录地址 //进入目录
cd / //退回根目录
cd .. //退回上一级目录
md //创建新的文件夹
copy con 文件名 //创建文本文件
rd //删除空文件夹
Del //删除文件
rd /s //删除文档,需要询问
rd /s/q //删除文档,不需要询问
cls //清屏
dir //展示目录
type //查看文件内容
3.java基础语法
3.1java发展史
1.Java起源于1995年
2.Java之父詹姆斯高斯林
3.Java平台版本(重点)
Java EE:针对桌面应用开发和商务应用开发的一种方案
java ME;针对嵌入式应用开发的一种方案(移动端:手机)
java SE: 针对企业开发的一种方案
3.2java语言特点
简单性 解释性
面向对象 高性能
分布式处理 多线程
健壮性 动态
结构中立 安全性
开源
跨平台
3.3Java系统环境的配置path
1.配置环境变量的原因
为了让我们在任何目录中都能够使用javac和java指令
2.配置方式1
1)复制jdk安装目录的bin目录的路径 举例:D:\develop_software\Java\jdK_8\bin
2)此电脑--->右键属性---->高级系统设置---->环境变量----->系统环境---->找到path将上面路径复制到path中(放在最前面)
3)退出dos窗口,重写打开新的dos窗口,在任何目录中进行编译和运行!
方式1配置的弊端
1)不安全,当jdk版本切换,需要手动更改系统变量中path,可能会导致别的环境变量被误删!
2)这种方式后期 学习"web应用服务器" tomcat(用java编写的),启动会闪屏(启动失败),tomcat服务器启动的时候会寻找系统变量是否有"JAVA_HOME"的变量,如果存在,tomcat启动不会闪屏!
配置方式2(推荐方式)
1)复制jdk安装路径(不需要bin目录的路径)
举例:D:\develop_software\Java\jdK_8
2)此电脑--->右键属性---->高级系统设置---->环境变量----->系统环境---->
新建一个变量名
变量名 JAVA_HOME
变量值 上的jdk的安装路径
3)在path中的路径上使用 %JAVA_HOME%\bin
优点:
1)安全,即使jdk升级,不需要改动系统变量中path路径,只需要更改JAVA_HOME对应的路径
2)后期使用tomcat web服务器的时候,不会出现闪屏!
3.Path环境变量的执行流程
1)先要去在指定目录中(文件夹)找是否存在这个 xxx.java文件,如果存在这个文件就直接编译然后运行字节码的前缀
2)如果当前指定的目录中(文件夹)如果不存在xxx.java文件,那么就需要在系统变量path中 %JAVAH_H0ME%\bin
这个路径去寻找是否存在,如果存在,就编译,如果也不存在,那么说明系统中不存在这个文件 "找不到文件!"
3.4关键字
1.概念:被Java语言赋予特定含义的单词.
2.常见的关键字有:class\public\static\void...
注:goto和const作为保留字存在,目前并不使用
3.5标识符
1.概念
就是给类,接口,方法,变量等起名字时使用的字符序列
2.命名规则
标识符可以包含 英文字母26个(区分大小写)
0-9数字
$(美元符号)
_(下划线)
注:标识符不能以关键字命名
不能以数字开头
3.命名习惯
• (1) 标识符要符合语义信息。
• (2) 包名所有字母小写。
• (3) 类名每个单词首字母大写,其它小写,如:TarenaStudent。
• (4) 变量和方法:第一个单词小写,从第二个单词开始首字母大写,如:tarenaStudent。
• (5) 常量:所有字母大写,每个单词之间用 _ 连接。
3.5常量
1.概念
在程序过程中,其值不发生改变的量!(固定值)
2.分类
1)字面值常量
A)字符串常量:
使用双引号括起来的内容都是字符串
举例: "高圆圆","helloworld"....
字符串+任何数据 = "新的字符串" ; 中间"+",拼接符号
或者任意数据+"字符串"="新的字符串";
B)字符常量:
使用单引号括起来的单个内容
举例:
'a','A','0'
字符单独使用,就是代表字符本身 ,如果字符参与运算,它会寻找
ASII码表中的对应的整数值计算(重点)
'A'对应的值 65
'a'对应的值 97
'0'对应的值 48 (只有参与运算才去找个值)
'AB'---错误的
C)整数常量
100,10,24...
包含进制
进制:数据进位一种方式
D)小数常量
3.14,12.35
E)布尔常量
true或者false
F)空常量
null ---属于"引用数据类型"的默认值 (面向对象中讲)
举例:String:jdk提供的字符串类(字符串在java非常特殊的引用类型)
String s = null ;
String s = "高圆圆" ;
2)自定义常量
java中一个关键字 final:状态修饰符(最终的,无法更改的)
Ps(注意事项):
字符常量:System.out.println('AB') ;//必须单个内容(这种表示字符常量的方式是错误的;
System.out.println('a'+1) ;//'a'参与运算对应的ASII码表的值 97 *字符常量是参与运算的
System.out.println('A'+1) ; //'A'参与运算对应的ASII码表的值 65
System.out.println('0'+1) ;//'0'参与运算对应的码表的值 48
空常量定义方式:
空常量
//System.out.println(null) ;//这种定义是报错的!
//首先定义一个字符串
String abc = "高圆圆" ;
System.out.println(abc) ;
abc = null ;//再进行重新赋值
System.out.println(abc) ;
3.5.1进制转换(扩展)
1.定义:是数据进位的一种方式
2.任意进制转换十进制
系数*基数的权次幂相加------得到十进制!
系数:就是当前这个数据的每一位上的数据本身!
基数:x进制---十进制:基数就是x (x代表二进制,八进制,十六进制)
权次幂:就是给当前这个数据从个位的基数进行编号,从右到左(0开始)
3.十进制转成任意进制(除基取余法)
4.8421码(二进制和十进制快速转换法)
3.6变量
1.定义
在程序的执行过程中,其值发生改变的量!
2.定义变量的三要素
1.数据类型
2.变量名:满足标识符的规则”小驼峰命名法“
3.初始化值
3.数据类型:(重点)
1)基本数据类型:四类八种
整数类型: 如果题意中没有明确要求数据类型,默认都是int
byte 字节类型 占1个字节 范围:-128~127(考点)
short 短整型 占2个字节
int 整数类型 占4个字节
long 长整型 占8个字节
整数默认int,在定义long类型,在初始化值的后面加上标记 L或者l(推荐L)
浮点类型 默认类型是double
float 单精度类型 占4个字节
float后面的值必须加标记F或者f
double 双精度类型 占8个字节
字符类型
char 使用单引号括起来的字符 占2个字节
布尔类型
boolean 表示true或者false ,不会参与运算!(开发中表示逻辑:真或者假)
2)引用数据类型
数组,类,接口
4.什么隐式转换?
byte,short,char三者之间不转换,一旦参与运算,优先提升int(考点)---long---float----doubel
boolean不参与任何类型转换
5.什么是显示转换(强转)
将大的数据类型转换成小类型
目标数据类型 变量名 = (目标数据类型)(初始化值/或者表达式) ;
6.定义变量的注意事项:
1)Java语言是一个"强类型"语言,它的语法结构非常严谨,不能重复定义变量
而前端语言:javascript:弱类型语言,是可以重复定义变量;
2)java语言中的所有语句结束了就必须带";"分号
3)定义变量代码书写格式:(代码风格)
建议:一行一个变量,不要所有变量都写在一行上
4)定义变量,但是在使用之前没有初始化,就会报错,系统认为这个变量没值!(仅仅适用于局部变量)
局部变量:在方法(函数)中定义的变量,都是局部变量,必须使用之前给值!
3.7位运算符
1.运算符
包括:
算数运算符
赋值运算符
关系(比较)运算符
逻辑运算符
三目运算符
扩展:位运算符
2.算数运算符
基本算数运算符:+,-,*,/,%
注意:
/:默认取整(java是强类型语言,弱类型javascript端语言不会默认取整)
%:模:求余数
扩展的算数运算符:++和--(使用比较多)
当定义的int型数据在使用/时,默认取整,如果想要精确一点的结果,可以在分母上*1.0
暂时扩展:
//小数计算 - 或者/ 计算机计算的时候,"伪计算"
//jdk提供一个类(后面讲这个常用类:BigDecimal 会对小数进行精确计算!)
2.1扩展的算术运算符
两种用法:
1)单独使用
++或者--在数据的前面:
++或者--在数据的后面:
结论:无论在数据的前面还是数据的后面:都是自增1或者自减1
2)参与运算使用
++或者--在数据的前面:
先进行自增或者自减,然后参与运算
++或者--在数据的后面:
先运算,然后当前变量本身自增或者自减
3.基本的赋值运算符
将=号右边的值赋值给=号左边指定类型的变量
举例:
int x=10;
注:
= 不能写成== ,==不能写成=(==是比较运算符)
3.1扩展的赋值运算符
+=,-=,*=,/=,%= :将等号右边的数据和左边的变量值操作,在赋值给左边的变量
举例:
int x = 10;
x+=20;-------->等价与x=x+20;(前提条件:类型相同)
将=等号左边的变量和右边的值相加在赋值给左边的变量x
4.关系(比较)运算符
<,>,<=,>=,==,!=
这些符号连接的表达式无论简单还是复杂的结果都是boolean值!
==:在基本数据类型中,比较两个数据值是否相等;
注意事项:
==不能写成 "="
5.逻辑运算符
数学表达式
3<=x<=5, 计算机语言中:必须使用逻辑符号连接!
1.逻辑运算符号(开发中经常用到)
基本的逻辑运算符号:
逻辑与&:具有并列条件,所有条件必须同时满徐才能成立!
特点:有false则false(有一个不满足则为false)
&符号连接的左边表达式如果是false,右边依然要执行,效率低。
逻辑或|:或的关系,只要满足一个条件即可成立。
特点:有true则true
|符号连接的左边表达式如果是true,右边依然要执行,效率低。
逻辑异或^
特点:相同则为false,不同则为true
简单记:男女关系
男男 x 女女 x
男女 √ 女男√
逻辑非!
特点:
非true,则false
非false,则true
偶数个非是它本身!
5.1扩展的逻辑运算符
面试题:
逻辑双与&&和逻辑单与&有什么区别?
共同点:有false,则false (并列条件,必须同时满足条件才成立!)
区别:逻辑单与&:连接的表达式左边如果是false,右边仍要执行。
单&时,左边无论真假,右边都进行运算。
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
6.三元(三目)运算符
还有二目:一个表达式两个变量 x==y
三元运算符的格式:
(表达式)? 执行true的结果:执行false的结果; (后期在jdk源码中会见到)
执行流程:
1)表达式可以简单可以复杂,结果是boolean,判断表达式是否成立
如果成立,则执行true的结果
2)否则不成立,则执行false的结果;
7.键盘录入
1.为什么要使用键盘录入数据?
如果直接去定义变量,直接写死了,程序不灵活,jdk提供给我们“文本扫描器”
可以键盘录入数据,让程序更灵活一些。
键盘录入数据的操作步骤:
//1)在class类上面书写 导包的格式
import java.util.Scanner;
//(在java中只要不是java.lang包下的类,都需要进行导包操作)
//2)在main 方法中,创建文本扫描器:格式
Scanner 变量名 = new Scanner(System.in); 固定格式
//3)提示并录入数据(没有提示数据类型,默认录入int)
System.out.peintln("请输入一个数据:");
int 变量名 = 文本扫描器变量名.nextInt(); nextInt():文本扫描器的
3.7.1位运算符扩展
1.位运算符里面的移位符号(扩展)
<<(左移):
将"<<"左边的数据向左移动指定的位数(补码进行移动),
将高位丢弃掉,空位补0
结论:将"<<"左边的数据乘以2的移动次幂
>>(右移):
将">>"左边的数据使用补码向右移动,如果最高符位是0,左边补0;
如果最高符号位是1,左边补1;
结论:将">>"左边的数据除以2的移动次幂
>>>(无符号右移):
将">>>"左边的数据使用补码向右移动,无论最高符号位是1
还是0,永远左边空位补0;
2,位异或^特点
一个数据被另一个数据位异或^两次,其值是它本身
位异或^概念:
相同则为0,不同则为1
3.8流程结构语句
1.顺序结构语句
从main方法这个入口进去,代码由上往下依次进行
特例:只要在main方法之前,jvm退出了!
jdk提供一个System.exit(0);正常终止jvm(后面常用类中)
2.选择结构语句
1.选择结构语句之if
2.三种格式
if(表达式){
语句;
}
if(表达式){
语句1;
}else{
语句2;
}
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}else if(表达式3){
语句3;
}...
...
}else{
语句n;
}