目录
计算机基础
计算机由两部分组成: 软件和硬件. 没有安装任何软件的计算机叫做裸机
1.计算机硬件概念:由电子,机械和光电元件组成的物理装置的总称
组成:由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等等!
2.计算机软件两种: 系统软件:dos系统,windows系统,Linux系统,MAC系统 移动端:Android系统,ios系统
应用软件: 计算机上的安装的客户端软件,如QQ,办公软件
软件结构的划分
1.C/S结构 :客户端和服务器端交互
特点: 客户端软件必须升级才能使用服务器端的高版本功能
典型的应用:QQ客户端要想去发红包,如果当前版本比较低,必须升级才能使用高版本功能!
2.B/S结构(架构):浏览器端和服务器端交互
特点: 只要保证你计算机上有浏览器,无论高版本还低版本都能够访问服务器
典型的网站: 访问网易新闻等等网站(只要你有浏览器就可以)
人机交互的两种方式
1.图形界面化(快速) 简单,直观,容易上手(快速去创建文件/文件夹/删除等操作)
2.命令行方式(掌握指令)
基本操作:1.windows键+r键组合键----输入cmd---进入dos窗口
2.在windows开始菜单----输入cmd---打开命令行提示符
常用的命令:
1. dir 查看当前盘符或者文件夹里面的所有的子文件以及子文件夹的名称
2. cd 单级目录(文件夹) 进入指定的目录
3. cd 多级目录的路径 进入多级目录
4. cd../cd .. 回退上一级目录
5. cd\ 或者cd \ :直接回退当前根目录
6. md 文件夹名称: 创建目录
7. copy con 源文件的名称 ---回车进入编辑模式,书写完毕,ctrl+z,回车 整个创建完毕
8. rd 文件夹名称: 删除空目录
9. rd /s 文件夹名称: 删除带内容的目录(询问是否删除)
10. rd /s /q 文件夹名称:删除带内容的目录(不询问)
11. del 文件名称: 删除文件
12. cls :清除屏幕
Java发展以及安装
Java发展历史
Java之父 詹姆斯高斯林 1995年正式推出
Java特点
简单性,健壮性,分布式
Java的三个平台版本
JavaSE: 针对桌面应用程序的解决方案
JavaME :针对嵌入式设备提供的一套解决方案
JavaEE :针对企业级开发解决方案
jre,jdk,jvm区别
1. JVM:虚拟机 假象计算机,自己的网络,自己的内存区域等等;
2. Jre:Java运行环境,所有的Java应用程序要运行,计算机上必须有Java环境的支持,没有这个东西,运 行不了,而Jre里面包含了Jvm以及Java程序运行时所有需要的核心类库
3. Jdk:Java开发工具包,里面有很多的开发工具 tools.jar包,里面有工具类(Arrays:数组工具 类,Collections:集合工具类...),还包括了jre
4. 三者的关系:Jdk > Jre > Jvm其实只需要安装jdk即可
Java文件编译运行
1.javac.exe编译的执行性文件,编译为class文件 java.exe 运行的执行文件,运行class文件
2.步骤:
1)编写Java代码
2)text文件改成Java文件,即后缀名.text变为.java
3)进入dos窗口,Windows+r,输入cmd进入
4)从dos窗口中进入文件夹
5)编译 javac+文件夹名.java
6)运行 java +文件夹名
配置环境变量
1.将jdk的bin目录的路径复制
此电脑--->右键---->属性----->高级系统上设置---->环境变量 ---->系统变量
系统变量找path
jdk的bin目录的路径复制过来放在path里面, D:\software\Java\jdk1.8.0_162\bin
配置完成之后,打开dos窗口,在任何路径下都可以使用javac和java) 输入javac java java -version 都是有提示信息,说明可以用了
2.赋值jdk安装目录的路径D:\software\Java\jdk1.8.0_162
此电脑---->右键---->选择属性---->高级系统设置---->环境变量---->系统变量
系统变量----->新建一个变量名: JAVA_HOME 变量值:路径
在path里面 引入JAVA_HOME对应的变量值的路径
path环境变量里面的最前面 %JAVA_HOME%\bin
好处:以后jdk版本升级,不需要改动path,只需要改动JAVA_HOME变量值里面的路径
3.path环境变量的作用:jdk的bin里面javac和java指令在任何目录都能够操作指定的java文件
Java基础
注释
单行注释//
多行注释/* */
文档注释/** */这是一个特殊,通过jdk的安装目录里面bin里面javadoc.exe指令能够解析文档注释
关键字
被Java语言赋予特定含义的单词
及开发工具idea(以后用的这个)/eclipse等等 针对关键字有一种颜色标记
package:包名(文件夹/目录结构)
class:定义类的格式,固定格式 class 类名{}
public:权限修饰符 (公共的/公开的,任何人都可以访问的),访问权限足够大
goto/const这两个字 作为"保留字"
static:静态修饰符
变量里面的基本数据类型都是关键字
标识符
1.对包名,类名,接口名,变量名,方法名,常量名起名字的一个字符序列
2.组成规则:0-9到数字组成 ,字母字符(26个字母) ,$符号 ,_下划线
3.注意规则:1.不能以数字开头 2.Java严格区分大小写,一定要起名字见名知意 3)标识符不能是Java中的关键字
4.起名规范:1)包名:单级包:(字母都是小写),多级包:包名和包名使用.隔开
2)类名和接口名:大驼峰命名法,单个单词,首字母大写,其余小写;多个单词组成,每个单词首字母大写,其余小写
3)变量名和方法名:小驼峰命名法,一个单词,那么 单词的字母全部小写;是多个单词,那么第一个单词字母小写,从第二个单词开始,每个单词首字母大写 ,其余小写!
4)常量名:单个单词 ,字母全部大写;多个单词,字母全部大写,单词和单词之间用下划线隔开
常量
值不发生改变的量
分类:1.字符串常量:使用英文的符号"" 双引号括起来的任何内容都是字符串
2.字符常量:使用英文的'' 单引号阔括起来的单个字符内容
3.整数常量
4.小数常量
5.布尔常量:true/false
6.空常量,一般不能直接输出null,引用数据类型默认null
7.自定义常量
变量
1. 在程序过程中,其值发生改变的量
2. 变量的三要素:1)数据类型,2)变量名,3)初始化值
3. 定义变量:
4. 两种方式
1)先定义,然后在赋初始化值
数据类型 变量名;
变量名 = 值; (在使用这个变量之前,必须赋值,否则编译报错!)
2)要么直接定义时候赋初始化值
数据类型 变量名 = 初始化值;
基本数据类型
整数类型:byte:一个字节 (-128-127),short:两个字节, int:四个字节, long:八个字节,后面需要标记,加上L/l 默认int
浮点类型:float double,默认double,float类型后面需要标记,加上F/f
字符类型:char
布尔类型:true,false,boolean不参与运算,只是表示true或者false 占1个字节
引用数据类型:接口,类,数组
定义变量的注意事项
1.在Java语言中同一个变量不能被定义多次
2.我们现在定义都是局部变量,在使用之前,必须初始化,否则就出现错误!
//一行定义一个变量
int a=10;
int b=20;
//一行定义多个变量
int a=10,b=20;
进制的转换
任意进制到十进制的转换: 位权展开法 系数*基数的权次幂相加的结果
十进制到任意进制的转换:除基取余,除到商为0为止,余数反转
隐式转换
不需要调用函数,JVM自动将类型转换的一种方式
自动转换,Boolean不能转换
byte,short,char三者之间不会相互转换,一旦参与运算,会优先提升int-->long-->float-->double
显示转换
强转类型转换:将大的数据类型转换成小的数据类型,会导致精度缺失
格式:目标数据类型 变量名 = (目标数据类型)(初始化值或者表达式);
转换注意(面试考点)
变量和常量相加区别:
变量相加,需要考虑类型转换,(Java中隐式类型转换) byte,short,char三者不转换,一旦参与运算,优先提升int,--->long--->float--->double
常量相加:先相加,然后看计算的结果是否在接收类型范围内,在直接用,否则,需要处理
补码,反码,原码
正数的符号位为0,正数的原码,反码,补码都相同
负数的最高符号位为1
反码:最高符号位不变,数值按位取反,0变1,1变0
补码:最高符号位不变,在反码的基础上+1
已知复数的补码求原码:
复数的补码----反码-----在补码的末尾-1,最高符号位不变,按位取反,0变1,1变0。
扩展算数运算符++--
不参与运算,单独使用
a)在数据的前面
b)在数据的后面
结论: 无论++或者--在数据的前面还是后面,都是对当前数据进行自增1或者自减1
参与运算
a)在数据的前面
结论: ++或者--在数据的前面,先进行增1或者自减1,然后参与运算!
b)在数据的后面
++或者--在数据的后面,先运算,然后进行自增1或者自减1
赋值运算符
基本的赋值运算符:=
举例:
int a = 10 ;
将10这个数据赋值给int类型的变量a
将等号的右边的值赋值给等号左边的变量这个"="不能写成"==" ,后者是比较,最终的结果无非true或者false
扩展的赋值运算符+=,-=,*-,/=,%=
举例:
int b =100 ;
b += 200 ; // 如果明确了具体的数据类型 (整数默认int) b = b+200;
将这个扩展的赋值运算符的左边的变量和右边的数据值相加,在赋值给左边的变量
特点:隐藏了强转类型转换
逻辑运算符
1.逻辑双与&&和逻辑单与&有什么区别?
共同点: 无论是逻辑单与&还是逻辑双与&&都是表达并列关系, 而且都是有fasle则false
不同点:
逻辑单与&,对多个并列条件在执行的时候,效率比较低,因为都 需要将这个符号左边的表达式和右边的表达式都需要执行一遍
逻辑双与&& , 连接的表达式如果左边为false,则右边不执行(具有短路效果) 开发中扩展的逻辑运算符,代替基本的运算符,执行效率高
2.逻辑| 和逻辑 || 的区别?
逻辑单或|,对多个并列条件在执行的时候,效率比较低,因为都需要将这个符号左边的表达式和右边的表达式都需要执行一遍!
逻辑双或|| ,连接的表达式如果左边为true,则右边不执行(具有短路效果)开发中扩展的逻辑运算符,代替基本的运算符,执行效率高
3.逻辑双与&&: 连接的表达式如果左边为false,则右边不执行(具有短路效果)
逻辑双或||: 连接的表达式如果左边为true,则右边不执行(具有短路效果)
三元运算符
(表达式)?执行true的结果:执行false的结果;
定义变量,求两个变量最大值(没有提示,都是int类型)
class OperatorDemo{
public static void main(String[] args){
int a=4;int b=5; int c =7;
(a==b)?true:false;
int d=(a>b)?a:b;
int e=(d>c)?d:c;
}
}
位运算符
位运算符里面的移位符号的特点
<<:左移
将这个数据补码---进行左移,
多余的位数(最高位)丢弃掉,在右边补0
结论: 使用<<符号左边的数据乘以2的移动次幂>>:右移
将数据补码进行右移,最高位是1,左边补1,如果最高位是0,左边补0,多余的位数丢弃掉
结论:将>>左边的数据除以2的移动次幂
>>>:无符号右移
将数据的补码进行右移,将多余的丢弃掉,无论最高符号位是1还是0,左边永远是补0
异或
位异或的特点:一个数据被另一个数据位异或两次,其值是它本身
//将两个变量的数据进行交换
class OperatorTest{
public static void main(String[] args){
//方式1:中间变量
int a = 10 ;
int b = 20 ;
a = a ^ b ;
b = a ^ b ;
a = a ^ b ;
System.out.println("a:"+a) ;
System.out.println("b:"+b) ;
}
}
键盘数据录入(重点)
使用步骤:
1)导包 :位置是在class的上面 import java.util.Scanner ; 用谁导谁
2)创建文本扫描器 ----java中的关键字 new 创建对象(具体在面向对象中讲)
Scanenr 变量名(称为"键盘录入对象名") = new Scanner(System.in) ; 固定格式 变量名 ,自己起名字
3)友情提示 "请输入一个数据:" 4)通过文本扫描器录入数据 (整数默认int)
int 结果变量名= 变量名.nextInt() ; //.nextInt() :调用文本扫描器的提供功能,录入int类型 5)使用这个结果变量名来进行操作
import java.util.Scanner ;
class ScannerDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请您输入一个数据(int):");
int result = sc.nextInt(); //.nextInt() :调用文本扫描器的提供功能 (固定写法)
System.out.println("录入的数据是:"+result);
}
}
例子:键盘录入三个数据,比较三个数据最大值
import java.util.Scanner ;
class ScannerTest{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int num1 = sc.nextInt();
System.out.println("请输入第二个数据:");
int num2 = sc.nextInt();
int max = (num1 > num2)? num1:num2;
System.out.println("最大值是:"+max);
}
}
流程控制语句
顺序结构语句 :比较简单,所有程序都是通过jvm调用main进行的(入口)
代码右上而下依次加载,除非在加载后面代码之前,jvm退出了!
选择结构语句
if
switch
循环结构语句
for
while
do while
if语句
1. 格式:
if(表达式){
语句1;
}else{
语句2;
}
场景:针对情况进行判断
执行流程: 表达式成立,则执行语句1; 否则,执行语句2;
2. 有大括号的地方,不能有分号,有分号地方不能有左{
3. 字符串进行比较: String类的 字符串值1.equals(字符串值2) ,是比较字符串内容是否相同
4.简单模拟"登录"
import java.util.Scanner;
class IfTest{
public static void main(String[] args){
String username = "admin" ;
String password = "123456" ;
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入用户名:") ;
String inputUserName = sc.nextLine() ;
System.out.println("请您输入密码:") ;
String inputPwd = sc.nextLine() ;
if(inputUserName.equals(username) && inputPwd.equals(password)){
System.out.println("登录成功") ;
}else{
System.out.println("用户名或者密码输入错误!") ;
}
}
}