------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
Java基础常识
软件开发:一系列按照特定顺序组织的计算机数据和指令的集合。
常见的软解:系统软件如DOS,Windows,Linux等。应用软件如扫雷,迅雷,QQ等。
什么是开发?:
就如所说的制作软件。
软件的出现实现了人与计算机之间更好的交互
交互方式:图形化界面,这种方式简单直观,容易上手操作。
命令行方式:需要一个控制台,输入特定的指令,让计算机完成一些操作,较为麻烦,需要记住一些命令。
dos命令行,比较常见的命令:
dir:列出目录下的文件以及文件夹
md:创建目录
rd:删除目录
cd:进入指定目录
cd..:退回上一级
cd/:退回根目录
java语言的三种技术架构
J2EE(Java 2 Platform Enterprise Edition)企业版
J2SE(Java 2 Platform Standard Edition )标准版
J2ME(Java 2 Platform Mico Edition )小型版
注:Java5.0版本后,更名为JAVAEE JAVASEJAVAME
Java的跨平台性:
Java可以在不同的系统平台上都可以运行。
原理:只要在需要运行java应用程序的操作系统上,先安装一个java须立即(JVM Java Virtual Machine)即可由JVM来负责java程序在该系统中的运行。
java环境搭建所需软件:
JRE:java运行环境
JDK:java开发工具包
JVM:虚拟机
(环境变量配置)
1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量
值:C:\Program Files\Java\jdk1.7.0变量名:CLASSPATH 变量
值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;3.选择“系统变量”中变量名为“Path”的环境变量,双
击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用分号和已有的路径进行分
隔。变量名:Path 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注释:
// : 单选注释
/* */: 多行注释
/**: java专用注释,文档注释*/
Java语言基础组成
关键字 标识符
注释 常量与变量
运算符 语句
函数 数组
Java判断语句”if”
if语句格式: if(条件表达式)
{执行代码}
if-else-if语句格式:if(条件表达式一)
(执行代码一);
else if(条件表达式二)
(执行代码二);
else
(执行代码三);
特点:一般情况下,if-else-if结构中根据条件判断,只会有一个大括号中的代码被执行。因此非常适合适合用来实现分类讨论。
java判断语句”switch”(只接受byte short intchar)
switch语句格式:switch(表达式)
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
default: ----->(如何所有条件都不成立就执行此语句的类容)
执行语句;
break;
}
执行顺序 与各选项排列顺序无关,default最后执行。
把default放第一位置,且选项中无对应值,又没break,会什么都执行,直到break,或到}
if与switch很像,该怎么选择:
如果判断具体数值不多,而符合其接受类型,用switch效率稍高
其他情况:对区间判断,对结果为boolean的类型判断,使用if
java循环语句while
while语句格式:while(条件表达式)
{
循环体(执行语句);
}
While特点:先判断条件,只有条件满足才执行循环体。
do while语句格式:do
{
执行语句;
}while(条件表达式);
do while特点:先执行循环体,再判断条件,条件满足,再继续执行循环体。
(do while 无论条件是否满足,循环体至少执行一次。)
java 循环语句for
for语句格式: for(初始化表达式; 循环条件表达式; 循环后的操作表达式)
{
执行语句;
}
小细节:无限循环的最简单表现形式。
For的无限循环//for(;;){}
while的无限循环//while(true){}
其它流程控制语句。
break(跳出), continue(继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。
注:
1,这两个语句离开应用范围,存在是没有意义的。
2,这个两个语句单独存在下面都不可以有语句,因为执行不到。
3,continue语句是结束本次循环继续下次循环。
4,标号的出现,可以让这两个语句作用于指定的范围。
函数的概述:
什么是函数?
函数就是定义在类中的具有特定功能的一段独立小程序。
函数也称为(方法)。
函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)
{
执行语句;
return 返回值;(谁调用它就返回给谁)
}
返回值类型:函数运行后的结果的数据类型。
参数类型:参数的数据类型
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:这个功能结束后的结果返回给调用者
//需求:定义一个功能,完成一个整数的*3+5的运算,并打印结果。
代码演示:
class Lianxi
{
public static void main(String[] args)
{
<span style="white-space:pre"> </span>//调用getResult方法,并传入一个8.将运算后的值赋给int型变量num。
int num = getResult(8);
//调用自定义的输出函数将num传入,打印结果为29(正确)
sop(num);
}
//定义一个函数名字叫做getResult,权限是共有的,静态方法,返回值为int,参数列接收一个int型变量。
public static int getResult(int x)
{
//返回一个参数乘以3加上5的值
return x*3+5;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
(注:如果当函数运算后,没有具体的返回值时,这时返回值类型用一个特殊的关键字来标识。该关键字就是void代表的是函数没有具体返回值的情况)
(注意:函数中只能调用函数,不可以在函数内部定义函数。放到类里边即可。)
总结:定义函数可以将功能代码进行封装,便于对该功能进行复用,函数只有被调用 才会被执行,函数的出现提高了代码的复用性。
如何定义函数呢?
1,既然函数是一个独立的功能,那么该功能的运算结果是什么先明确(这其实是在明确函数的返回值类型)
2,在明确在定义该功能的过程中是否需要未知的类容参与运算(明确的是函数的参数列表,参数的类型和参数的个数)
总结:两个明确
1,明确要定义的功能最后的结果是什么?
2,明确在定义该功能的过程中,是否有未知的内容参加运算。
函数的重载(overlord)
重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
重载的特点:与返回值无关,只看参数列表。
//需求:定义一个加法运算,获取两个整数的和。
代码演示:
class Lianxi
{
public static void main(String[] args)
{
sop(add(5,6));
<span style="white-space:pre"> </span> sop(add(5,6,7));
}
public static int add(int x,int y)
{
return x+y;
}
//定义一个加法,获取三个整数的和
public static int add(int x,int y,int z)
{
return x+y+z;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
什么时候用到重载呢?
当定义的功能相同,但参与运算的未知类容不同。
那么这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数
数组
数组的定义:同一种数据类型的集合。其实数组就是一个容器。
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式
元素的类型[] 数组名 = new 元素类型[元素个数或则数组的长度]
//需求:想定义一个可以存储三个整数的容器。
int[] x = new int[3]。
//另外一种定义数组的方式
int[] x = new int[]{5,4,6}
数组的操作:获取数组中的元素,通常会用到遍历。
方法:
class Lianxi
{
public static void main(String[] args)
{
int [] arr = {3,4,6,7,8,2};
for(int x=0; x<arr.length; x++)//
{
System.out.println("arr["+x+"]="+arr[x]+";");
}
}
}
常见的几种数组排序演示:
//数组排序之冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)// -x:让每一次比较的元素减少,-1:避免角标越界。
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y]= arr[y+1];
arr[y+1]= temp;
}
}
}
}
数组排序之选择排序
public static void selectSort(int[] arr)
{
for(int x=0;x<arr.length-1; x++)
{
for(int y=x+1; y<arr.length; y++ )
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x]= arr[y];
arr[y]= temp;
}
}
}
}
通过以上两种排序方法发现两者都有一个共同点,就是对角标的元素进行位置置换,那么就可以抽取这个共同点,单独的创建一个功能函数
public static void swap(int[] arr,int a,int b)
{
int temp =arr[a];
arr[a] =arr[b];
arr[b] =temp;
}