一、计算机基础知识
- 计算机硬件
计算机硬件:指组成计算机的各种物理设备的总称。
计算机硬件主要包括:CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等多种设备。 - 计算机软件
计算机软件:计算机使用过程中必不可少的东西,计算机软件让计算机按照特定的程序实现特定的功能。计算机软件按照负责的功能划分,可以分为两类:系统软件与应用软件。
系统软件:指操作系统等可以直接和计算机硬件进行交互的软件,主要负责与计算机硬件进行交互。
应用软件:具体完成各项具体功能的软件。 - 两种基本概念的解释
图灵机:软件和硬件分开,用软件运行软件。
冯诺依曼体系:计算机应该由输入设备、输出设备、运算器、控制器与存储器组成。 - 简单的DOS命令
切换路径操作:
c: / d: / e: + 回车:盘符切换。
cd:切换到指定目录,可以是一个绝对路径,也可以是一个相对路径,还可以是一个特定的路径,"\"代表根目录。
目录操作:
dir:列出当前目录下的文件及文件夹。
md:创建目录。
rd:删除目录。
文件操作:
type nul>文件名:创建文件。
de:删除文件。
copy 源文件 目标文件:复制文件。
其他操作:
exit:退出DOS。
cls:清屏。
二、Java语言介绍
- Java语言平台版本
J2EE:企业版,主要是针对企业应用开发。
J2SE:标准版,主要提供一些开发桌面程序的解决方案。
J2ME:微型版,主要提供电子消费产品与嵌入式设备的解决方案。 - Java语言的特点
简单性:Java的语法较为简单。
解释性:Java语言并不是一次编译,直接运行的,需要相应的解释器进行翻译。
面向对象:面向对象作为一种编程理念,基本上被所有的现代编程语言所接受,同时也符合人们的认知习惯,相较于面向过程性的编程语言,面向对象的语言更适合于开发应用软件。
开源:Java语言是开源的。
跨平台性:传统的编译型语言需要针对不同的操作系统使用特定的语言开发软件,比如Windows上需要使用C#,Linux上需要使用C语言,MacOS上使用Objective-C,由此造成了许多麻烦,但是用Java语言写成的代码并不是直接运行在操作系统上,而是由Java虚拟机翻译成对应系统的语言再执行,Java对不同操作系统推出了不同版本的虚拟机,这样就实现了一套程序可以在不同平台上运行,也就是跨平台性。
三、JDK的安装与配置
JDK是Java开发工具包,Java推出的给Java开发人员使用的一套工具,可以用于开发Java程序,JRE(Java Runtime Environment)是Java运行环境,如果用户想要运行Java程序,就需要JRE,JDK中已经包含JRE。
- JDK的安装
JDK可以直接在官网下载,注意要选择适合当前系统平台的版本,然后运行Java安装程序,这时要注意,只需要安装JDK,不需要安装包JRE,因为JDK已经包含JRE。 - 环境变量的配置
- 为什么要配置环境变量?
- 如果不配置环境变量,在每次运行javac与java命令时,都需要指定完整的路径,或者是java.exe所在的路径,或是.java文件所在的路径,配置环境变量后,系统会去PATH中直接寻找这个路径,然后执行这个路径下的命令。
- 怎样配置Java的环境变量?
- 在Windows系统中打开高级系统系统设置,添加一个名叫JAVA_HOME的系统变量,这个系统变量中的路径是你的JDK所在的目录,然后在PATH中添加一个环境变量:%JAVA_HOME%\bin\就可以了,%JAVA_HOME%指的是我们之前配置的系统变量,然后这个意思就是将JAVA_HOME这个目录与bin目录进行拼接成一个完整的路径,因为在每一个JDK包下bin目录都是固定的,所以可以这样做。
- Java编译的步骤
首先,如果我们想要创建一个Java程序,需要新建一个.java文件,并且里面的公共类名要与文件名相同,之后保存,在cmd中使用java file.java命令就会在当前目录下生成一个.class的文件,我们称之为字节码,再运行javac file,记住不要加.class,因为这个命令会自动给我们加,这样就成功运行了一个Java程序。整个过程就分为两步,先生成字节码文件,再运行。
四、Java中的关键字
- 定义
被Java语言赋予了特殊定义的单词,在Java语言中有特殊作用,不能用作标识符。 - 特点
Java语言中的关键字全部小写。
五、Java中的标识符
1.定义
标识符就是Java中给包、类、变量、数组、接口、枚举、方法等起名字的字符序。列。
2.标识符的注意
- 由英文大小写字母、数字以及$和_组成。
- 不能以数字开头。
- 不能是Java中的关键字。
- 区分大小写。
- 标识符要有意义,一般是一个单词或者多个单词的组合。
- 对于包名来说:全部小写,一般是公司的域名倒着写,Java中的包可以理解为不同的文件夹,主要就是解决相同类名的问题。
- 对于类名(接口)来说,首字母大写,如果有多个单词,每个单词的首字母都要大写。
- 对于方法名与变量名来说,采用“驼峰命名法”,第一个单词的首字母小写,其余单词的首字母大写。
- 自定义常量,所有字母大写,如果有多个单词的话,中间以下划线分隔。
六、Java中的注释
Java中的注释的作用是为了解释说明,对于软件开发来说,在编写代码的同时写注释有利于理清思路。
- 文档注释:/*注释文字/ 用于对整篇文档起解释说明的作用,Java有专门的工具对文档注释进行解析,生成HTML格式的帮助文档。
- 多行注释:/注释文字/ 如果注释的内容较多时,就可以使用多行注释,可以在多行起作用,只要是包裹在里面的代码。
- 单行注释://注释文字 注释内容较少时,可以使用单行注释,只对当前行起作用。
七、进制转换
我们在日常生活中最经常使用的是十进制,在计算机中经常使用的却是二进制与十六进制,前者是因为CPU就是利用电流的通断来表示数据的,只有两种状态:0和1,后者是因为可以用较短的位数来表示更多的数,此外还有八进制,不过不经常使用。每种进制都有优缺点,二进制便于计算机运算,但是人类阅读起来比较困难,直观性不强,十进制人类计算很方便,但是计算机却不认识,十六进制可以用更短的位数表示更多的数据,但是阅读起来很有困难。所以就需要对不同的进制之间进行转换。十进制转二进制的方法是除2取余法,二进制转十进制每位上的数字需要乘10的n次方。
八、常量与变量
- 常量
定义:常量指的是一旦初始化之后,值不能被改变的量,按照定义的主体划分,可以分为字面值常量与自定义常量。
- 整型常量、浮点数常量、字符常量、布尔常量、字符串常量、null常量
注意:字符常量不能为空,即''中必须存在值,即使是空格,但是字符串常量可以为空,即""中可以没有任何内容,在C语言中,字符串是以'\0'结尾的,即使是空字符串,也必须以'\0'结尾,所以这就解释了为什么字符串可以为空。
- 变量
- 定义:变量,顾名思义就是变化的量,值可以被改变的量,相较于常量,具有更大的灵活性。
- 作用域:Java中用{}包裹起来的一段代码就是一段作用域,同一个作用域内不能定义相同名称的变量。
- 初始化值:局部变量在使用之前必须要赋值。全局变量也是需要赋值的,只不过一次赋值,以后都可以使用了。
- 一条语句可以定义多个相同类型的变量,但是只用声明一次变量类型,Java中的一条语句以";"结尾。
九、数据类型
在现实世界中,任何东西都是有分类的,在自然界中,生命可以分为植物、动物与人。同样,在计算机语言中,数据也是有分类的,这是为了给不同的数据类型分配不同的类型大小,同时不同的数据类型可以进行的操作也不同。
- 数据类型的分类:
- Java中数据类型按照定义划分,可以分为基本数据类型与引用数据类型。
- 基本数据类型包括:byte short char int long float double boolean
- 引用数据类型包括:数组、类、接口、枚举、注解。
类型 所占大小 表数范围
byte 1个字节(8bit) -128-127
short 2个字节(16bit) -215~-215-1
char 2个字节(16bit) 0~65535
int 4个字节(32bit) -231~-231-1
long 8个字节(64bit) -263~-263-1
float 4个字节(32bit)
double 8个字节(64bit)
boolean 八分之一个字节 true和false
- 数据类型的转换
由于不同的数据类型支持的操作不同,有的方法只接受特定类型的数据,所以有时候就需要对数据进行类型的转换,按照进行类型转换的主体划分,数据类型的转换可以分为隐式转换与强制转换。隐式转换是编译器自动帮程序员进行的转换,隐式转换是有限制的,编译器只能帮我们将小的数据类型转化为大的数据类型,比如将int转换为long,将float转换为double,因为在转换的过程中编译器会自动在前面补上0,不会有精度损失,但是对于将大的数据类型转换为小的数据类型,编译器并不能自动帮我们做,需要我们手动转换,转换的方法是在要转换的数值前面加上"(数据类型)",比如要将int型的数据转换为byte,需要使用byte b = (byte)213232。长度如果超过转换后的位数,会将超过的位数截断,所以可能会有精度损失。
注意:
当我们定义byte类型的变量并赋值的时候, 其实后面的数值是int的型, 也就是说其实是将大的类型转到小的类型上去, 但是这里编译器依然没有报错, 那是因为编译器在编译的时候会尝试将判定数值的大小,如果数值没有超过变量类型的限定, 就可以存放。但是其他类型的复制就没有,比如如果将一个long类型的字面值常量赋值给一个int型的变量就无法成功。
byte、short、char类型的变量在进行运算的时候会自动转换为int型然后进行运算,所以返回的数据是int型 - char类型
char类型在Java中使用两个字节表示,以数字形式存储,每一个数值对应着一个字符。Java使用的Unicode字符集,Unicode字符集每个字符占用两个字节,一个中文也是两个字节,所以可以存储一个中文。
十、运算符
Java中的运算符有:算术运算符、关系运算符、赋值运算符的、自增与自减运算符、逻辑运算符、位运算符、条件运算符。
- 算术运算符
Java中的算术运算符包括+、-、*、/、%。这些运算符的运算顺序是自左向右,后面三个运算符的优先级要高于前面两个运算符。加号运算符有三个作用:正数、加法、字符串拼接。 - 自增与自减运算符
++与--是Java中的自增与自减运算符,既可以放在操作数的前面,也可以放在操作数的后面,单独使用的时候两者没有区别,但是如果和赋值运算符结合使用的话是有区别的。比如a=i++与a=++i。前者表示先赋值,后自增,后者表示先自增,再赋值。 - 赋值运算符
赋值运算符包括=、+=、-=、*=、/=、%=。赋值运算符的运算顺序是自右向左,运算符优先级较低。 - 关系运算符
关系运算符包括<、>、<=、>=、==、!=。关系运算符用于比较运算符两边的值的关系,返回的结果是一个boolean类型的true或者false。此外还有一个instanceof,用于判断左边的对象是不是右边类及其子类的对象,一般用在强转之前,因为强转可能导致转换失败。 - 逻辑运算符
逻辑运算符包括&、|、!、&&、||、。逻辑运算符的作用是用于比较两个boolean结果,返回的也是一个boolean结果。需要注意的一点是&&和||与&和|的区别,前面是短路与、短路或,只要左边的值能够得出结果就不会计算右边的值了,后面的是即使左边的值能够得出结果,还是要计算右边的值,所以短路与、短路或的效率较高,一般编程中使用的也是这两个。异或运算符()如果两边的值不同,就返回true,相同就返回false,用于比较两边的值是否不同。 - 位运算符
位运算符主要有&、|、^、~、>>、<<、>>>。我的理解是在Java中1可以认为是true、0可以认为是false。上述运算符都是在二进制的基础上进行计算。无论是有符号右移还是无符号右移,都会在左边补上0,区别是一个是从左起第一位补0,另一位是从左起第二位补0,两者都是有风险的,只有有符号左移风险性较低,作用是将数值乘以2的n次方,相较于算术运算符来说效率较高。 - 条件运算符
条件运算符又称为三目运算符,表现形式是:condition?statement1:statement2。如果condition为true,就执行第一条语句,否则执行第二条语句。条件运算符可以看作是简化版的if...else...语句。
十一、从键盘获取数据
- 首先导入Scanner包:import java.util.Scanner
- 然后从输入流创建一个Scanner对象,和键盘建立连接:Scanner sc = new Scanner(System.in);
- 读取一个int型数值:int i = sc.nextInt();
- 读取一个double型数值:double d = sc.nextDouble();
- 读取一个字符串,以空格或者换行符作为结束符:String str = sc.next();
- 读取一整行,忽略空格,以换行符表示输入结束:String strs = sc.nextLine();
十二、语句结构
Java中的语句结构可以分为顺序结构、选择结构与循环结构
- 顺序结构:Java默认的结构,自上而下执行语句,选择结构与循环结构都需要使用特定的关键字。
- 选择结构
选择结构的作用是控制语句的执行,在某种情况下执行一部分语句而不执行另一部分语句。Java中的选择语句有两类:if语句与switch语句。
- if语句
- 格式一:if(){...}。if后面紧跟着一对小括号,里面的运算结果是一个boolean类型的true或者false,如果为true就执行花括号中的语句,否则就不执行。
如果花括号中只有一条语句,花括号可以省略。但是建议不要省略。 - 格式二:if(){...} else{...}。如果if后面的判断条件为true,就执行第一个花括号中的语句,否则就执行第二个花括号中的语句。
- 格式三:if(){...} esle if(){...} else if(){...} else{...}。这种格式的语句执行流程是依次从上往下依次判断每一个if后的条件,如果是true就执行紧接着的花括号中的语句,直到最后一个else。
- 格式一:if(){...}。if后面紧跟着一对小括号,里面的运算结果是一个boolean类型的true或者false,如果为true就执行花括号中的语句,否则就不执行。
- switch语句
switch(value){
case value1:
statement1;
break;
case value2:
statement2;
break;
...
default:
...;
break;
}
switch后面的值的类的类型只能是:byte、short、int、char、String、enum。
case后面的值不能出现重复的情况,否则编译器会报错,而且case后面的值只能是常量。
case穿透:在swith...case...语句中,程序如果没遇到break会一直执行下去,直到遇到break或者"}"。所以说break在switch...case...语句中是非常重要的。