一.Java相关知识
1.计算机语言是人类与计算机沟通的语言
常用的软件分为系统软件(如:windows,ios,mac),应用软件(如QQ,微信)
2.计算机语言总的来说分为机器语言,汇编语言,高级语言
3.java不仅仅是一个编程语言,也是一个技术平台
4.java是当今最流行的软件开发语言之一,企业版本使用java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等
5.jdk下载网址:java.oracle.com
6.java语言的特点:
(1):java不想c++那样复杂,,java删除了许多让c,c++程序员头疼的问题,如指针变量,多重继承,头文件,运算符重载等复杂的知识点,java语言简单突出
(2):java语言最突出的特点是平台无关性,使用者可以在不同的系统平台上运行,也就是说一次编写,随处运行
(3):交互式特性,多线程机制,由于java支持TCP/IP协议,是的用户可以通过浏览器访问到互联网上的各种动态对象,并且在网络上可以交互式地进行各种动作,而多线程技术的引入是的这种交互式操作更为容易
(4):java语言特点:健壮性,又称鲁棒性
java的强类性机制保证任何数据必须有明确的数据类型
Java提供异常处理机制,能够统一处理异常事件
Java语言采用了自动垃圾回收机制进行内存的管理
Java语言在安全性方面引入了实时内存分配及布局来防止程序员直接修改物理内存布局,通过字节代码验证器对字节代码的检验,以防止网络病毒及其他非法代码侵入
7.Java是一门面向对象的语言
面向对象与面向过程是两种有代表性的编程思想
面向对象的三大特征:封装,继承,多态
8.程序的运行
9.dos界面指令
win+R后输入cmd进入dos界面
指令:切盘符,如d:进入d盘
Cd+目录名,进入目录
Cd.返回上一级
Cd..返回到盘的目录
dir查看当前目录有那些文件夹,文件
可以通过\/直接进入文件夹
Cls清空
10.jdk的安装路径:Jdk安装位置必须以jdk版本文件夹结尾,如jdk1.8.0_202\
jdk环境变量配置:
第一步:右键点击此电脑,选择高级系统设置
第二步:选择环境变量
第三步:复制jdk安装的路径,到bin目录截止
第四步:在系统变量中新建JAVA_HOME,将复制的jdk路径黏贴到后面
第五步:在系统变量中的path中增加%JAVA_HOME%\bin
第六步:测试是否成功,在控制台输入java -version,输出jdk版本则成功
11.使用JDK开发完成的java程序,交给JRE运行
Jre:java运行环境
Jdk:java开发工具包
12.
java文件名必须与类名相同,且首字母大写
主方法中
Public:没有,能编译,不能运行
Static:没有,能编译,不能运行
Void:没有,编译报错
Main:修改后,能编译,不能运行
String[]:修改后,能编译,不能运行
主方法中能改的只有形参
13.代码在dos界面由javac进行编译,编译后自动生成字节码文件(.class结尾的),然后通过java运行(java+文件名)
14. Public class 类名,类名必须与文件名相同,否则编译报错,这是主类,如果没有主类,会编译报错,不可以同时出现多个主类,只能有一个
Class 类名,可以与文件名不相同,可以有多个
二.字符
1.String代表字符串类型
java中,类名首字母大写,语句后面要叫 ; ,且所有符号都要英文
在输出语句System.out.println();中,println表示换行,print表示不换行
在dos界面中,javac编译时后面可以接有路径的文件名,如javac ./Test.java
\n表示换行,与System.out.println();作用相同
\t表示空格,宽度与 Tab相同,也可小于Tab的宽度,小于时,自动对齐
2.标识符:
是程序中自定义的一些名称,见名知意
由26个英文之母大小写,数字0-9,下划线_,$组成
标识符不能以数字开头,不可以使用关键字
java中严格区分大小写
3.包名:多单词组成时字母都小写,如chinasofi
类名接口名:多单词组成时,所有单词的首字母大写,如AnimalDemo
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(驼峰命名法),如endStr
常量名:所有字母都大写,多单词时每个单词用下划线链接,如PI_VALUE
命名必须规范
4.注释
单行注释://注释内容
多行注释:/*注释内容*/
文档注释:/**注释内容*/
对于关键的代码必须注释
5.java中常量的分类
整数常量:所有整数
小数常量:所有小数
布尔(boolean)型常量:只有两个数值true false
字符常量:将一个数字,字母或符号用单引号(‘’)标识
字符串常量:将一个或者多个字符用双引号(“”)标识
Null常量:只有一个数值null
6.java中变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
7.变量声明形式:
声明 数据类型 变量名 = 【值】;
赋值 变量名 = 值;
声明并赋值 数据类型 变量名 = 【值】;
变量名 = 【值】;
输出时,变量名加上双引号或单引号输出变量名,而不是变量的值
8.变量的分类
局部变量:方法内部声明的变量(包括参数)
成员变量:方法外,类体内声明的变量
变量使用的注意事项:
变量的作用范围在一对{}之间
java中的每一个变量使用前必须要先申请(声明,定义),然后必须进行赋值才能使用,否则报错
该区域的数据可以在同一类型范围内不断变化
在一个方法中变量名不能重复声明,在范围内不能有同名变量
9.java是强类型语言,任何一个变量或常量在java中必须有确定的数据类型
java语言的数据类型有两种,即基本数据类型和引用类型
10.java数据类型
基本数据类型
数值型
整数:byte,short,int.long
小数:float,double
字符型:char
布尔型:boolean(true,false)
引用数据类型
类,接口,枚举,注解,数组
11. 每种数据类型都有默认值,当属性没有被赋值时,则会使用数据类型的默认值,
Byte,short,int,long的默认值为0,float,double默认值为0.0,char的默认值为空(\u0000)
Boolean的默认值为false
12.不同数据类型之间可以转换
从表示范围小的类型转为范围大的类型,可以直接转换,称为隐式转换
从范围大的类型转换为范围小的类型,需要强制转换,称之为显示转换
数值类型和boolean类型之间不可以转换,强制也不行
浮点型转整型时会舍弃小数部分
大的可以理解为盆,小的可以理解为碗
范围大的数与范围小的数运算的结果时范围大的,盆与碗运算结果是盆
13.如果byte,short,char数据类型的值相计算,计算结果是int型
如果一个操作数最大范围的数据类型是long型,计算结果是long型
如果一个操作数最大范围的数据类型是float型,计算结果是float型
如果一个操作数最大范围的数据类型是double型,计算结果是double型
14.从功能角度划分,Java中的运算符可以分为:算数运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三元运算符
运算符即可以对变量进行运算,也可以对常量进行运算
运算时,先计算右边的结果,再将右边的结果赋值给左边
整数相除还是整数,小数部分舍弃
浮点型(整形) / 整形(浮点型) = 浮点型
15.有表达式时
a++:先运算(赋值),后+1
++a先+1,后运算(赋值)
没有表达式时,a++,++a就表示+1
char和int型结果位ASCII
/进行整除运算,结果是商的整数部分
%进行取模运算,结果是余数部分.
三.输入,分支语句
1.Scanner是一个工具类,常使用此类获取控制台的输入
使用步骤:
在类上导入包,import java.util.Scanner;
使用控制台输入,创建Scanner对象,Scanner 名 = new Scanner(System.in);
调用Scanner中的netXXX方法,获取需要的类型,如next,nextline,nextInt,nextString,根据数据类型选择,但是不同的数据类型会报错
new:创建对象
System.in:标准输入流
nextLine:获取控制台输入的字符串
2.赋值运算符
A+=3有默认的转换,会将3转换位A的类型
3.比较运算符:也叫关系运算符,用来运算两个数的大小关系,返回值是true或false
4. 除了== !=外,都只能比较基本数据类型
== != 比较基本数据类型是比较值,比较引用类型是比较虚地
小数,十进制与二进制转换时,会出现精度问题
5.逻辑运算符
&和&&不同,&&通过&&前面的判断出结果后&&后面的不在执行
^异或相同结果为false,不同为true
|和||不同
6.位运算符:针对二进制位进行的运算
Imteger.toBrinaryString(数字)//十进制转为二进制
Integer.parseInt(“二进制”,2)//二进制转十进制
7.三元运算符
条件表达式1 ? 表达式2 : 表达式3
如果条件位true,运算结果是表达式2,如果条件位false,运算结果是表达式3
测试程序时,多用临界值或边界值测试
8.运算符优先级
9. 条件分支if
If语句指的是如果满足某种条件,就进行某种处理
If(判断语句){//判断语句的返回值必须是布尔型
执行语句
}
判断语句-if(说明)
条件表达式可以是任何一种逻辑表达式
如果判断语句为true,则执行花括号内的内容,在执行后面的内容
如果判断语句为false,则执行if整体后面的内容
如果,大括号只有一条语句,则可以省略大括号,(推荐不省略),省略后if只能控制下面第一条语句
&&当第一个表达式为false,第二个表达式不用判断
9.if(判断表达式){
执行语句1:
}else{
执行语句2;
}
If(判断语句){
执行语句1;
}else if(判断语句2){
执行语句2;
}else{
执行语句3;
}
顺序很重要
10. 条件分支 switch/case
Switch(表达式){
case常量表达式1:语句1;break;
case常量表达式2:语句2;break;
……
default:语句;//可省略
}
可以在case语句中用break语句控制跳出整个switch语句,只要执行到break语句,就跳出整个switch语句
说明:表达式式具体的值,不能是范围
表达式的值只接受byte,short,int,char,枚举,String,不接受其他的类型,不允许有重复的case值
switch一旦碰到第一次case匹配,程序就会跳转到这个标签位置开始顺序执行以后的代码,不管后面的case条件是否匹配,知道碰到break语句为hi
default放在末尾,也可以省略,如果没有找到匹配值就会执行此语句块(相当于if语句中的else)
11.java有三种循环语句:for,while,do while
for(初始化语句;判断条件语句;控制语句){
循环体语句块;
}
初始化语句:只有第一次执行,给循环变量赋初值
判断条件语句:返回结果为布尔型,结果为true,继续执行,结果为false,跳出循环
控制语句:修改循环变量,执行一次循环体后执行
循环体语句:可以是多条语句,条件判断语句为true则执行
临界值:初始化的值,最后一个值
continue:不在往下执行语句,但会执行a++,而是执行下一次循环
break:跳出整个循环
12.while循环
While(判断条件语句){
循环体语句块;
控制语句;
}
特点:先判断,在执行
判断条件语句:符合条件,循环继续执行,否则循环推出
循环体语句快:循环中被重复执行的操作
13.do while循环
do{
循环体语句块;
控制语句;
}while(判断条件语句);
先执行一边循环体
符合条件,循环继续执行,否则循环推出
While后有分号
14.While和do while的区别
15. 嵌套循环
循环可以嵌套使用,即循环体是另一个循环
for(){
for(){
……
}
}
16.java中数字默认int,浮点默认double
If与swutch的区别
If要一步一步的判断,switch直接进行匹配,
17.用continue标号;语句继续执行指定的循环
18.用break标号终止指定的循环
break(跳出):立即跳出当前循环,执行循环之后的第一条语句
continue(继续):应用于循环结构,停止当前循环,如果循环条件满足,开始下一轮循环(该循环的这次循环停止,但整个循环不停止)
19.while没有大括号时只有while下第一行代码是循环,不加{}效果同if
if中不能有break
基本数据类型和String相加结果一定是String
char为什么支持汉字,因为java使用unicode
四.数组
1.数组相当于汽水箱子,
数组是一组类型相同的数据的集合,数组中可以储存多个数据,但是这些数据的类型必须是相同的
数组能够作为数据的容器使用,把多个数据集中存储
存储在数组中的数据,都有相应的索引值,可以方便获取或修改,索引值从0开始的
当需要同时保存多个类型相同的变量并进行处理时,可以考虑用数组
2.java的数组本身是引用数据类型,但可以储存基本数据类型,也可以存储引用数据类型
数组的声明方式:数组元素类型 【】 数组名 推荐使用
数组元素类型 数组名 【】
注意:元素类型的指的是数组里面存储的数据类型
数组声明后还只是一个空指针,不能使用,要想使用必须创建
3.数组创建的三种方式:
数组元素类型【】 数组名 = 数组元素类型【数组长度】;
声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
如int [] arr1 = new int[5];
数组元素类型【】 数组名 = new 数组元素类型 【】{用逗号隔开元素的具体值};
声明数组并分配内存,同时初始化,arr2的长度为4,元素的值为3,5,1,2
如 int arr2 = new int []{3,5,1,2};
数组元素类型【】 数组名 = {用逗号隔开数组元素的具体值};
如 int arr3 = {1,2,3,4};//arr3的长度为4,元素值为1,2,3,4
int型数组初始值是0,byte型数组初始值是0,double型数组初始值是0.0,char型数组初始值是空,boolean型数组初始值是false;
数组索引从0开始,索引最大值比数组长度小1;
4.数组的长度:length属性,获取数组元素的个数,数组名.length
注意:数组的索引是int类型,从零开始,索引最大值和数组长度始终差一
创建数组的时候必须指定数组的长度,而且一经定义则不允许改变
数组的长度是5,但是在内存中实际给六个位置,多出的一个存储的是长度5
数组越界:访问数组元素超出数组长度Array Index Out Of Bound Exception
5.数组遍历方式
遍历:将数组中元素一个一个取出来使用
6. 空指针异常(NullPointorException)
Int[] arr = null;
System.out.println(arr);//输出null
System.out.print(arr[0]);//空指针异常
arr没有引向实体,却在操作实体中的元素
Int[] arr;//编译时报错,局部变量没有初始化
7.多维数组即数组的数组,即数组的元素也是数组
二维数组的声明三种方式
Int [][] a1;//推荐使用
Int []a2[];
Int a3[][];
二维数组的创建与初始化:
数组元素类型【】【】 数组名 = new 数组元素类型【一维数组长度】【二维数组长度】;//可以不指定二维数组长度
如:int[][] a = new[2][3];
赋值1:
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
赋值2:
a[0]=new int[]{1,2,3};
a[1]=new int[]{1,2,3};
二维数组的一维长度必须规定,会数组越界,二维数组长度长度可以不规定,不会数组越界
判断数字是否相同,可在for循环外进行输出
8.