------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
基础常识
dos命令行中常见的命令
dir :列出当前目录下的文件以及文件夹
md :创建目录
rd :删除目录
cd :进入指定目录
cd.. :退回到上一级目录
cd/ :退回到根目录
del :删除文件
exit :推出dos命令行
Java语言的特点:跨平台性
Java实现跨平台的原因是:Java虚拟机(JVM JavaVirtual Machine)的存在,它负责Java程序在系统中的运行,针对不同的操作系统有不同的版本,只要在需要运行系统上先安装相应的JVM即可。
JRE(Java运行环境),JDK(Java开发工具包)
JRE包括Java虚拟机(JVM)和Java程序所需的核心类库(运行工具)等。运行一个开发好的Java程序,只需要安装JRE即可
JDK包含java的开发工具,JRE。是提供给Java开发人员使用的。
简言之:使用JDK开发完成的java程序,交给JRE去运行。
变量配置
path变量是windows程序文件的目录
特点:
(1)如果没有配置path环境变量, JVM只在当前目录下查找要运行的文件。
(2)如果配置了path环境变量, JVM会先在当前目录下查找,再在path环境变量值的目录中查找。
classpath变量值是java类文件的目录
特点:
(1)如果没有配置classpath环境变量, JVM只在当前目录下查找要运行的类文件。
(2)如果配置了classpath环境变量, JVM会先在classpath环境变量值的目录中查找,再在当前目录下查找要运行的类文件。
配置classpath环境变量;加与不加的区别:
(1)值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。
(2)值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。
建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用“.”表示。
注释
注释的类型:单行注释//,多行注释/* */,文档注释/** */
注释的作用:(1)注解说明解释代码,(2)调试程序
单行注释中可以有单行注释;多行注释中可以有单行注释;多行注释中不可以有多行注释。
标识符
由26个英文字母大小写,数字:0-9符号: _ $组成。严格区分大小写。
规则:
1,数字不可以开头。
2,不可以使用关键字。
包名:多单词组成时所有字母都小写。xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz
变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接。XXX_YYY_ZZZ
进制
八进制,用0开头表示;十六进制,用0x开头表示。
十进制转二进制除以2取余数;二进制转十进制乘以2的幂数。
四个二进制位代表一个十六进制位;三个二进制位代表一个八进制位。
负数的二进制:对应的正数二进制取反+1。负数的最高位都是1.
数据类型
基本数据类型:数值型(整数类型,浮点类型float double),字符型char,布尔型boolean。
整数类型:byte(8个二进制位:-128~127),short(16个二进制位),int(32个二进制位),long()。
引用数据类型:类class,接口interface,数组[]。
小数默认情况下是double注:float f=2.3f
运算符
算术运算符
b=a++;a先赋值给b,再自增。
b=++a;a先自增,再赋值给b。
总之,不管加号在前 还是后,a都自增。
字符串数据与任何数据使用+都是相连接,最终都会变成字符串。
转义字符 通过\来转变后面字母或者符号的含义。
\n:换行。
\b:退格。相当于Backspace
\r:按下回车键。Windows系统,回车符是由\r\n两个字符来表示
\t:制表符。相当于tab键。
赋值运算符
short s=3;
s=s+5; 编译失败,因为s会被提升为int类型,运算后结果还是int类型。无法赋值给short类型。
s+=5; 编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
比较运算符
instanceof 检查是否是类的对象。
逻辑运算符
&和&&的特点:
&:两边都参与运行。
&&:当左边为false时,右边不运行。
|和||的特点:
|:两边都参与运行。
||:当左边为true时,右边不运行。
位运算符
6个运算符:<<左移 >>右移 >>>无符号右移 &与运算 |或运算 ^异或运算 ~反码
<<左移 空位补0,被移除的高位丢弃,空缺位补0。
相当于乘以2的倍数;移n位,就是乘以2的n次幂。
>>右移 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
相当于除以2的倍数;移n位,就是除以2的n次幂。
>>>无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。
&与运算 二进制位进行&运算,只有1&1时结果是1,否则是0;
|或运算 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^异或运算 任何相同二进制位进行 ^ 运算,结果是0; 1^1=0 , 0^0=0
不相同二进制位 ^运算结果是1。 1^0=1 , 0^1=1
~反码 二进制取反,1变0,0变1
&的规律:有假则假;|的规律:有真则真; ^的规律:同假异假(真--1,假--0)
异或的应用
一个数异或同一个数两次,结果还是原数。(如a^b^b=a)
该方法可用于加密或换位!
三元运算符
格式:(条件表达式)?表达式1:表达式2;
true返回表达式1;false返回表达式2。
好处:简化if else代码;
弊端:因是运算符,故运算完必须要有一个结果。
if与switch的区别
判断的具体数值不多,且符合byteshort int char四种类型,建议使用switch语句(效率稍高)。
对于区间或结果为boolean类型使用if语句(使用范围广)
while与do while的区别
while语句先判断条件,只有条件满足才执行循环体。
do while语句先执行循环体,再判断条件,条件满足,再继续执行循环体。
简单的说,do while:无论条件是否满足,循环体至少执行一次。
for与while的区别
对于变量来讲,如果该变量仅仅用于控制变量的循环次数,只作为循环增量存在,用for(优化内存);
变量有自己的作用域。
for(int y=0;y<3;y++)
{
}
//以上写成这种
int y=0;
for( ;y<3; )
{
y++;
} // 也对,但是这种直接写while 即可。
无线循环的最简单表现形式
for( ; ; ){ }对于for不写条件表达式默认为true
while(true){ }
for循环嵌套
外循环控制行数,内循环控制每一行的列数
两个for都++时的一般规律
尖朝上,可改变条件,让条件随着外循环变化;
尖朝下,可以改变初始化值,让初始化随着外循环变化。
break与continue的特点
break语句:应用于选择结构和循环结构
continue语句:应用于循环结构
这两个语句单独存在时,下面都不可以有语句,因为执行不到。
此标号的出现可以让这两个语句作用于指定范围。
函数与数组
函数的格式
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2, )
{
执行语句;
return返回值;
}
如何定义函数?
-
因为函数是一个独立的功能,所以先明确该功能的运算结果是什么; (明确函数的返回值类型)
-
在明确定义功能的过程中是否需要未知数的内容参与运算. (明确函数的参数列表)
函数的重载
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
数组
同一种类型数据的集合,其实数组就是一个容器。
格式1:
元素类型[]数组名
=new 元素类型[元素个数或数组长度];
示例: int[] arr = new int[5];
格式2:
元素类型[]数组名 = new元素类型[]{元素,元素,……};
Int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
排序
选择排序
内循环结束一次,最值出现头角标位置上。
冒泡排序 (相邻两个元素进行比较,若符合条件换位。)
-x:让每次比较的元素减少; -1:避免角标越界。
内循环结束一次,最值出现最后角标位置上。
Arrays.sort(arr);开发时的排序方法。
查找
获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
折半查找
提高了效率,但必须要保证该数组是有序的。
二维数组 数组中的数组
格式1: int[][] arr = new int[3][2];
二维数组中有3个一维数组,每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
如:arr[0][1] = 78; 给第一个一维数组1脚标位赋值为78
格式2: int[][]arr = new int[3][];
二维数组中有3个一维数组,每个一维数组都是默认初始化值null
可以对这个3个一维数组分别进行初始化
如: arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];