定义:指在当前方法内调用自己,即函数内部调用本函数
分类:
递归使用的前提
递归练习
1、计算1到n的和
package com.one;
public class Sum_n {public static void main(String[] args) {
// 使用递归计算1到100的和
int s= sum(100);
System.out.println(s);
}
/*
* 思路分析:
* 计算1-N的和
* 可以做 n+(n-1)+(n-2)+...+1
* 注:使用递归必须明确:
* 1、递归的结束条件
* 本题获取到1结束
* 2、递归的目的
* 获取下一个被加的数字
* */
public static int sum(int n){
//获取到1结果
if(n==1){
return 1;
}
//获取下一个被加的数字(n-1)
return n+sum(n-1);
}
}
package com.one;
public class Jiecheng {
public static void main(String[] args) {
//递归n(n-1)(n-2)..1
int jiecheng=jc(5);
System.out.print(jiecheng);
}
//方法的主体不变,参数发生变化
public static int jc(int n){
//获取到1结果
if(n==1){
return 1;
}
//获取下一个被加的数字(n-1)
return n*jc(n-1);
}
}
使用递归遍历文件目录
package com.one;
import java.io.File;
public class Dfile {
/要求打印多级目录/
public static void main(String[] args){
File file=new File("E:\note");
getAllFile(file);
}
public static void getAllFile(File dir){
System.out.println(dir);
File[] files=dir.listFiles();
for (File f:files){
if(f.isDirectory()){
//判断是否是文件夹,如果是文件夹,则执行本身继续递归遍历
getAllFile(f);
}else{
//不是文件夹,则直接打印
System.out.println(f);
}
}
}
}
/*Console结果
搜索限定文件类型
package com.one;
import java.io.File;
public class Dfile {
/*1、要求打印多级目录
* 2、要求只打印.md文件*/
public static void main(String[] args){
File file=new File("E:\note");
getAllFile(file);
}
public static void getAllFile(File dir){
File[] files=dir.listFiles();
for (File f:files){
if(f.isDirectory()){
//判断是否是文件夹,如果是文件夹,则执行本身继续递归遍历
getAllFile(f);
}else{
//不是文件夹,则直接打印
//使用File对象的toSting方法,在使用字符串的endWith("字符串")判断结尾字符,返回布尔值的方法;
String s= f.toString();
//把字符串全部转换为小写的
s=s.toLowerCase();
boolean bool=s.endsWith(".md");
if(bool){
System.out.println(f);
}
//简洁写法
//链式编程
if(f.getName().toString().endsWith(".md")){
System.out.println(f);
}
}
}
}
}
/*Console结果
E:\note\Ajax.md
E:\note\api1.md
E:\note\API2.md
//查看版本
javac -version
java -version
// 编译与执行
javac Xxxx.java
生成Xxxx.class
执行命令
java Xxxx
定义:在程序运行中,空间不能发生改变,变量不能被第二次赋值的空间叫做常量;只有一次赋值机会。
规范:所有字母大写
关键字:final
package com.two;
public class demo1 {
public static void main(String[] args) {
//声名常量
final double PI =3.1415926;
System.out.print(PI);
}
}
https://www.runoob.com/java/java-basic-datatypes.html
此处不在一一复习只做简单介绍:
计算机存储单位
1位=8字节
1bit=8byte
分类:
整型 int,long类型
浮点型 double float(注:float声名的数字需要在数字后添加f)
布尔型 boolean bool;
字符型 char a='k';占两个字节;只能使用单引号声名;
short 默认值 0
布尔型(boolean)不参与类型转换
自动
可以自然而然发生,不需要人为干预。一般发生在从小转向大。将小数据赋值给大类型的变量。从小类型转成大类型。数据是不会发生丢失
赋值:小的数据 给到大的类型的变量; 小的类型的数据给到大的类型的变量
运算:运算过程中,选取大类型(将所有运算数的类型自动转为同一种类型,然后运算)
必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
package com.two;
public class demo1 {public static void main(String[] args) {
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
}
}
/*c1 的值为字符 a ,查 ASCII 码表可知对应的 int 类型值为 97, A 对应值为 65,所以 i2=65+1=66。*/
强制类型转换
条件是转换的数据类型必须是兼容的。
格式:(type)value type是要强制类型转换后的数据类型 实例:
package com.two;
public class Demo2 {
public static void main(String[] args) {
// 强制类型转换
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
double d= (double)i1;
System.out.println("int强制类型转换为double后的值等于"+d);
}
}
/int强制类型转换为byte后的值等于123/
隐含强制类型转换
不辜负自己,加油;
手机扫一扫
移动阅读更方便
你可能感兴趣的文章