##第一部分、DOS命令
###1、java常用文件目录操作
a.硬盘的切换,如切换到e盘E:
b.进入指定目录cd+路径
c.浏览当前路径下目录 dir
d.cd…返回到上一级目录
e.cd/返回到根目录
f.del删除文件
g.rd删除目录
h.md创建目录
i.exit退出dos命令行
###2、指定path
a、查看当前path,输入path
b、设定path,path=新增路径;%path%
此种方式只在当前dos窗口有效
###3、java编译运行命令
编译:javac+java文件名.java
带包名时,将生成的class文件存于指定路径: javac -d 指定路径 java文件名.java
运行:java+java文件名
###4、java打架包
首先,在DOS命令行中进入到class文件包所在的目录下,然后输入:
Jar -cvf 所要生成的架包名.jar class文件包名
##第二部分、数据类型及内存
###1、概念
####数据类型:
数据类型
####常量:
表示不能改变的字符。包括整数常量、小数常量、布尔常量(true和false)、字符常量、字符串常量、null常量(空)。
####变量:
在内存中有自己的内存区域,有自己的名称和类型且可在同一类型的范围内变化,变量的作用范围为(一对{}之间有效)。
分类:
- 静态变量:作用于公共类中,任何地方可以直接调用。
- 成员变量:类里面声明的变量,作用于整个类
####转义字符
通过\来转变后面的字符或符号的含义
如制表符\t,换行符、\n,退格符\b等。
###2、Java中的名称规范
包名:多单词组成时所有字母都小写。
xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。
XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二 个单词开始每个单词首字母大写。
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。
XXX_YYY_ZZZ
###3、数据类型的转换
- 自动类型转换(也叫隐式转换)
正向过程:
由低字节向高字节自动转换byte->short->int->long->float->double
- 强制类型转换(也叫显示类型转换)
逆向过程:使用强制转换,可能丢失精度
如:int a=(int)5.33;
###4、进制的转换
对于整数java有三种表现形式:
十进制:0-9,满10进1
八进制:0-7,满8进1,用0开头
十六进制:0-9,A-F满16进1,用0x开头
####十进制转二进制
原理:对十进制进行除2运算,其相除所得的余数倒序排列就是其对应的二进制数。
二进制转换为十进制,将对应位分别乘以2的N次幂(n从低位对应0开始依次递增),然后将各位上所有的乘积相加,即为对应的十进制数。
####二进制转换为十六进制
每四个二进制位表示一个十六进制位,将每四位二进制数对应的十六进制数计算出来依次排列,并在前面加上0x,即为所得的十六进制数。
####二进制转换为八进制
每三位二进制数表示一个八进制位,将每三位二进制数对应的八进制数计算出来依次排列,并在前面加上0,即为所得的八进制数。
####负数的二进制
将其所对应的正数的二进制数取反加1,负数的最高位都是1。
###5、内存
java程序在运行时,需要在内存中分配空间,为了提高效率,又对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据的方式和内存管理方式。
- 栈内存:用于存储局部变量,当数据使用完,其所用的空间会自动释放。
- 堆内存:数组和对象,通过new建立的实例都存放于堆内存中,每个实体都有内存地址,实体中的变量都有默认的初试化值,实体在不使用是,会在不确定的时间内被垃圾回收器回收。
- 方法区、本地方法区、寄存器
##第三部分、位运算
###<< 左移:
<<n(n为正整数)二进制数向左移动n位,相当于乘以2的n次幂,右边用0补位。
###>> 右移:
>>n(n为正整数)二进制数向右移动n位,相当于除以2的n次幂。最高位补什么是由原有数据的最高位值而定,最高位为1则补1,为0则补0。
###>>> 无符号右移:
无论最高位是1还是0,右移后都用0补。
& 与运算:
低位对齐,1&1=1,其他均为0。
| 或运算:
低位对其,0|0=0,其他均为1。
^ 异或运算:
低位对齐,所对应位上的值不同为1,相同为0。
一个数以后同一个数两次,结果还是那个数。可用于两个数据的交换,当时要注意数据过大容易超出int的范围。
~ 反码:
0为1,0为1。
##第四部分、数组及排序
###1、定义
####一维数组
a、不进行初始化
元素类型[] 数组名= new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
b、创建是进行初始化
元素类型[] 数组名= new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
####二维数组
a、
int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组,每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
b、
int[][] arr = new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
c、定义并初始化
int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组
二维数组中的有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组arr[0] = {3,8,2};
第二个一维数组arr[1] = {2,7};
第三个一维数组arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;
###2、排序
####A、选择排序
#####依次用第一个,第二个……N个,与其后面的数进行比较交换。
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<length;j++){
if(arr[i]<arr[j]){
m=arr[i];
arr[i]=arr[j];
arr[j]=m;
}
}
}
####B、冒泡排序
#####依次用第一个,与第二;第二个与第三个,每两两相邻的数进行比较,最大的数依次后移。
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
m=arr[j];
arr[j]=arr[j+1];
arr[j+1]=m;
}
}
}
###3、Arrays.sort(arr);
####使用数组工具类,对数组进行排序。
###4、使用TreeSet()
####将数据存入TreeSet中,TreeSet会对存入其中的数据进行默认的排序,但是要注意,TreeSet会自动在重复的数据删除。
###5、常用的工具类方法
a、Arrays.asList(T… a)将一个数组转换为List集合
b、Array.sort(arr)对数组进行升序排列
c、Array.binarySearch(arr,key)使用二分搜索法来收索指定值,返回下标
##第五部分、函数
###1、定义
####函数也叫方法,即一段被封装的有特定功能的小程序
####函数的格式:
修饰符 返回值类 型函数名(类型 参数1,…类型 参数n)
{
执行语句;
return 返回值;
}
修饰符:即public、private等
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
return:用于结束函数,当没有返回值,其在最后一行时也可省略
返回值:该值会返回给调用者。
注意:在函数内部可以调用其他函数,但是不能定义其他函数。
###2、函数的重载
####在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。即同名,参数不同即可。例:
int puls(int i,int j){}
int puls(int i,int j,int k){}
double puls(double i,double j){}