第一章 程序入门及开发环境介绍
1、语言:1)、Java{爪哇,一个咖啡的名字}图标:一杯热咖啡。2)、visual C#{#[sharp]}—微软比尔盖茨
2、Java语言的特性:Java是一种面向对象的、独立于平台(OS)的语言。
3、Java源文件(*[后缀名].Java)—Java编译器—字节码文件(*.class)—Java解释器—运行
TXT(跨平台,什么情况下都可以用)
4、JavaDoc注释方式{注释的代码不参加编译。被注释的文字,不会被JVM【java虚拟机】解释执行。}:
1)、单行注释{行注释}://。
2)、多行注释{快注释}:”/*”可以多行”*/” 。
3)、文档注释:”/**”开始和”*/”结束。
5、Java语言规范:
1)Java严格区分大小写。
2)一行代码写完后以分号{;}结束。
3)所有的编程,标点符号必须是在英文下的标点符号。
4)Java有自动报错的机制,如果出现红色波浪线或者红叉,则代表有错。
5)代码块以{}包含。
6)class后面的类名必须与文件名一致。
6、\t{大空格} \n{换一行} println{打印并换行} print{只打印不换行}
第二章 变量、数据类型及运算符
变量的概念:java 语言中,变量占据着一块内存,这个内存可以存储任何东西,这要根据具体赋值来决定。
{在一个范围内变量名是不能重复的}变量:临时的在内存当中可以保存数据【地址】
1、java里面的数据类型分为两种:
(1)值类型:
[1]八种基本类型
<1>数值{数值型不能加双引号也不能加单引号}:
整型
long{长整型} 数据大小:1字节 取值范围:-128~127
short{短整型} 数据大小:2字节 取值范围:-32768~32767
int{整型} 数据大小:4字节 取值范围:-2147483648~2147483647
byte{字节型} 数据大小:8字节 取值范围:-9223372036854775808~9223372036854775807
非整型
float{浮点型} 数据大小:4字节 取值范围:1.4e-045~3.4e+038
double{小数点} 数据大小:8字节 取值范围:4.9e-324~1.8e+308
<2>非数值:
char{字符[用的少]:只能保存一个}—-字符使用单引号{”} 数据大小:2字节 取值范围:0~65535
boolean{布尔:boolean类型只[真true/假false]有这两个值} 数据大小:1字节
{不属于8种基本类型}String{字符串:能保存多个}———-字符串使用双引号{“”}
[2]枚举《枚举(Enums)JDK1.5加入了一个全新的类型的“类”–枚举类型。为此JDK1.5引入了一个新关键字enum》。
(2)引用类型:类,数组,接口。
值类型的数据保存在栈上。引用类型的数据保存在堆上。在java当中变量是保存在一个临时空间,这个临时空间就是保存在内存中,然内存当中对java而言有个东西叫椎有个东西叫栈。
2、赋值运算符{=}
语法:数据类型 变量名;—{在内存当中声明一个变量} 变量名{变量名不能增加双引号}=表达式;—{给变量赋值}
3、基本的算术运算:
+{加:除了加减的作用还有连接作用} -{减} *{乘} /{除:取整} %{取模:求余数}
++{递增运算} –{递减运算} +={加法赋值} -={减法赋值} *={乘法赋值} /={除法赋值} %={取模赋值}
1)、++a{[a=1+a]++前置,先加再用}:在任何情况下自己都会加1
2)、a++{[a=a+1]++后置,先用再加}:如果后面还有a++的情况下自己不加后面的a++加1
3)、–a(a=1-a):在任何情况下自己都会减1
4)、a–(a=a-1):如果后面还有a–的情况下自己不加后面的a–减1
变 首字母 其余部分
4、变量命名规则:量 = 1)字母 2)下划线{_} + 任意多的:1)数字 2)字母
名 3){$}符号 3)下划线{_} 4){$}符号
5、Scanner mys=new Scanner(System.in);
6、关系运算符{表示一个数值与另外一个数值之间的关系} :
=={等于} !={不等于} >{大于} ={大于等于} <={小于等于}
7、逻辑运算符{又称布尔逻辑运算符,它的操作数只能是boolean型的,而且逻辑运算的结果也是boolean型}
&{逻辑与。如果前面为false时后面也执行。} |{逻辑或} ^{逻辑异或} |={逻辑或赋值} &={逻辑与赋值}
!{短路与} !={不等于} =={等于} ^={逻辑异或赋值}
||{[或者]短路或}{true||true(true) true||false(true) false||true(true) false||false(false)}
&&{[并且]短路与。如果前面为false时后面就不执行。}{true&&true(true) true&&false(false) false&&true(false) false&&false(false)}
8、?:{三元运算[if-then-else]求三个数的最大值}
如果?前面的条件如果成立,输出?与:之间的这一块。如果?前面的条件如果不成立,输出:后面的这一块。
9、数据类型转换分为两种:(1)自动转{也叫隐式类型转换}(2)强转{也叫显式类型转换。主要是为了解决不能相互兼容数据之间的转换}
10、位运算符{直接对二进制进行运算。本质:把整数[十进制]转成二进制}
1)<>{右移。被移除的二进制最高位是0,右移后,空位补0。是1补1;}
3)>>>{无符号右移。被移除的二进制最高位无论是0/1,空位都补0;}
4)&{与运算。二进制进行&运算,只有1&1=1[就是上下两边都为1结果则为1],否则是0;}
5)|{或运算。二进制进行|运算,只有0|0=0,否则是1;[就是上下两边其中有一个为1结果则为1]}
6)^{异或运算。所有相同二进制进行^运算结果为0,不同的为1[就是上下两边不一样结果则为1]}7)~{反码。}
8)口诀(256 128 64 32 16 8 4 2 1)
【[1]二进制100000101转十进制261。
(256 128 64 32 16 8 4 2 1)
1 0 0 0 0 0 1 0 1
二进制中是1的跟据上面那个数相加,0不用管。256+4+1=261。
[2]十进制25转二进制11001。25在口诀中找到数字加起来等于25的。
(256 128 64 32 16 8 4 2 1)
1 1 0 0 1】
11、使用变量的步骤:
第一步:声明变量,即“根据数据类型在内存申请空间”
数据类型 变量名;
第二步:赋值,即“将数据存储至对应的内存空间”
变量名 = 数值;
第一步和第二步可以合并
数据类型 变量名=数值(“=”两边的数据类型必须高度一致);
第三步:使用变量,即“取出数据使用 ”
第三章 运算符及条件结构
1、boolean(布尔)类型的值:true{真} false{假}(boolean类型只有这两个值)
2、选择结构
1).if{如果}语法:if({条件,布尔值}){//代码块}
2).if{如果}-else{否则}语法:if(){//代码块1}else{//代码块2}
{当代码中只有一行语句的时候,花括号可以不写。可是不推荐}
3、运算符的优先级:1)最高的优先级:小括号“()” 2)最低的优先级:赋值运算符“=” 3)优先级顺序:!>算术运算符>比较运算符>&&>||
4、1)equals{区分大小写,字符串的比较用equals。类的equals方法在没有重写的情况下默认比较的是地址。equals比的是内容。}
2)=={数字、小数点、整型比较用==。“==”比的是地址。}3)equalsIgnorecase{不区分大小写的比较}
5、switch…case{是多分支结构:因为里面有很多分支}
语法:switch({选择变量}){case 值1:…break;{终止} case 值2:…break; … default:{如果上面都不满足的话就输出它}…}
{case可以将相同的代码块的case可以合并在一起}
6、Random myr=new Random();{得到一个随机数}
第四章 循环结构
1、循环
1)while循环{先判断,再执行。循环条件永远成立的,则称之为死循环}语法:while(循环条件){//循环操作} 2)do-while循环{先执行,再判断。至少会执行一次}语法:do{//循环操作}while(循环条件);
{分号不可少}
3)for循环{先判断,再执行。for比while更简洁}
语法:for(表达式1{参数初始化};表达式2{条件判断};表达3{更新循环变量}){循环操作;{条件为true,循环体被执行}}
{表达式1能省略但for外面必须有,表达式2能省略但会死循环,表达3能省略但for里面必须有,否则死循环。2个分号不能省略}
{表达式全省略,无条件判断,循环变量无改变,应在循环体内设法结束循环;否则会造成死循环}
只需知道无需了解4)for循环的第二种使用方法:
(1)循环初始化:i = 0;j = 输入值(2)循环条件:i<=输入值(3)循环操作:计算i+j(4)循环变量的啊变:i++,j–
for(int i=0,j=val;i<=val;i++,j–){System.out.println(i+”+”+j+”=”+(i+j));}
使用for循环结构的步骤:(1)分析循环条件和循环操作(2)套用for语法写出代码(3)检查循环是否能够退出
2、1)循环次数确定的情况,通常选用for循环。
2)循环次数不确定的情况,通常选用while和do-while循环。
(1)执行次序不同 (2)初始情况不满足循环条件时:[1] while循环一次都不会执行[2]do-while循环不管任何情况都至少执行一次
3、语句
1)break语句{终止。改变程序控制流。用于do-while、while、for中时,可跳出循环而执行循环后面的语句}
语法:while(…){……break;{终止整个循环,跳出整个循环}……}
2)continue语句{继续。只能用在循环里。作用:过循环体中剩余的语句而执行下一次循环}
语法:while(…){……continue;{继续下一次循环,终止单个循,但是整个循环没有退出}……}
3)区别:
break可用于switch结构和循环结构中。continue只能用于循环结构中。
break语句终止某个循环,程序跳转到循环块外的下一条语句。continue跳出本次循环,进入下一次循环。
4、1)水仙花数:每个数的地方和相加等于它自己本身。2)完数:所有因子的和相加等于它自己本身。3)素数:只能被1和本身整除的数。
5、循环嵌套{在循环的里面再嵌套一个循环}
第六章 数组{一个空间分成若干个小格子,每个小格子可以保存一个变量。空间里面的类型不能乱放}
数组定义:数组是一个变量,存储相同数据类型的一组数据
数组的优点:分类放,易于找
1、使用数组四步走:
1)声明数组{声明数组时不规定数组长度}:告诉计算机数据类型是什么
数据类型 数组名[];
2)数据类型[] 数组名; int[] a;
3)分配空间:告诉计算机分配几个连续的空间
数据类型[] 数组名=new 数据类型[大小]; a = new int[5];
如果一个数组分配了5个空间,那么最小的下标是0,最大的下标是4。
4)赋值:向分配的格子里放数据。 a[0]=8;
2、foreach循环一般跟数组一起用
3、冒泡排序{帮助我们从小到大或从大到小排序}
1)每次比较相邻两数,小的交换到前面,每轮结束后最大的数交换到最后
2)代码框架:for(i=0;i
3)冒泡排序速记口诀{升序}:N个数字来排队,两两相比小靠前,外层循环N-1,内层循环N-1-i。
4、选择排序{不用,又称分支结构}
5、整型数组在没有赋值的前提下默认是0。
6、1)数组的删除{删除一个值后面的值前移一位,最后一个值改为0}2)数组的增加{增加一个值后面的值后移一位,最后一个值挤出去}
7、一维数组{无小格子,只有很多大格子}一维数组长度{元素的个数,常作为循环的条件}:数组名.Length
二维数组{很多大格子,每个大格子里面放了若干个小格子。数组的数组,在数组里面在套一个数组。用途广泛}
int[][]a=new int[6][5];{有6个大格子,每个大格子里面有5个小格子}
示例:掌握推箱子简单版?
Scanner mys=new Scanner(System.in);
int[][] ints=new int[10][10];
int rx=0;//表示人得坐标i。
int ry=0;//表示人得坐标j。
ints[rx][ry]=1;//代表人。
ints[4][6]=2;//代表箱
ints[8][9]=3;//代表目的地
while(true){
for(int i=0;i
for(int j=0;j
if(ints[i][j]==0){System.out.print(“口”);}
else if(ints[i][j]==1){System.out.print(“人”);}
else if(ints[i][j]==2){System.out.print(“箱”);}
else if(ints[i][j]==3){System.out.print(“目”);}
}
System.out.println();
}
System.out.println(“请输入你要走的方向 s 代表往下走”);
String str=mys.next();
if(str.equals(“s”)){rx++;ints[rx-1][ry]=0;ints[rx][ry]=1;}
}