对网站策划的看法两个人看的视频在线观看

当前位置: 首页 > news >正文

对网站策划的看法,两个人看的视频在线观看,北京市网站建设,怎么用记事本做网站1、方法的概念和使用 1.1、什么是方法 方法#xff08;method#xff09;是程序中最小的执行单元#xff0c;类似于 C语言中的函数#xff0c;方法存在的意义#xff1a; 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置…1、方法的概念和使用 1.1、什么是方法 方法method是程序中最小的执行单元类似于 C语言中的函数方法存在的意义 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮子 注意 方法必须先创建才可以使用该过程称为方法定义。方法创建后并不是直接可以运行的需要手动使用后才执行该过程称为方法调用 1.2、方法的定义 方法定义语法格式 //方法定义 修饰符 返回值类型 方法名称(参数类型1 形参1,参数类型2 形参2…){方法体代码;[return 返回值]; }类比main函数public static void main(String[] args)其中void是返回值类型main是方法名称String[] args是参数类型和形参。 例子 判断闰年 1、能被4整除且不能被100整除的是闰年 2、能被400整除的是闰年 //判断闰年方法 public static boolean isLeapYear(int year){if((year % 4 0 year % 100 ! 0) || (year % 400 0)){System.out.println(year是闰年);return true;}else{System.out.println(year不是闰年);return false;} }【注意事项】 修饰符现阶段直接使用public static 固定搭配返回值类型如果方法有返回值返回值类型必须要与返回的实体类型一致如果没有返回值必须写成void方法名字采用小驼峰命名首字母小写后续单词首字母大写参数列表如果方法没有参数()中什么都不写如果有参数需指定参数类型多个参数之间使用逗号隔开方法体方法内部要执行的语句在java当中方法必须写在类当中在java当中方法不能嵌套定义在java当中没有方法声明一说方法只有先定义才能调用。方法的返回值类型是void时可以省略return但是也可以写后面不加数据即可。 1.3、方法调用的执行过程 方法的调用方式 方法名(参数1,参数2,…);调用过程 调用方法方法名(参数1,参数2,…);传递参数注意参数的数量与类型必须与方法定义中的设置相匹配否则程序将报错 。找到方法地址执行被调方法的方法体被调方法结束返回回到主调方法继续往下执行。 例子 public class Test01 {//判断闰年方法public static boolean isLeapYear(int year){if((year % 4 0 year % 100 ! 0) || (year % 400 0)){System.out.println(year是闰年);return true;}else{System.out.println(year不是闰年);return false;}}public static void main(String[] args) {Scanner scan new Scanner(System.in);System.out.println(请输入年份);int year scan.nextInt();//方法的调用boolean ret isLeapYear(year);} }在其他函数中去调用方法时的参数称为实际参数实参即上述main函数中的boolean ret isLeapYear(year);这句代码中year在方法定义中的参数称为形式参数形参即上述isLeapYear方法中的public static boolean isLeapYear(int year)这句代码的year。 【注意事项】 定义方法的时候不会执行方法的代码只有调用时才会执行。一个方法可以多次调用。 例子 计算 1! 2! 3! 4! 5! //求阶乘 public static int fac(int n){if(n 1 || n 0){return 1;}else {return n * fac(n - 1);} } public static void main(String[] args) {//计算 1! 2! 3! 4! 5!int sum 0;for (int i 1; i 5 ; i) {sum fac(i);}System.out.println(sum); }1.4、实参和形参的关系 形参方法定义中的参数 等同于规定了变量定义的格式。 实参方法调用中的参数 等同于使用变量或常量。
形参只是拿到了实参的值形参的名字可以随意取对方法没有影响形参和实参的名字也可以相同。 方法放在main前或者后都可以与 C语言不同自顶向下编译。在 java 中实参的值永远都是赋值到形参中形参和实参本质是两个实体。 例子1 //交换两个数值 public static void swap(int x, int y){int tmp x;x y;y tmp; }public static void main(String[] args) {int a 10,b 20;System.out.println(交换前 a b);swap(a,b);System.out.println(交换后 a b); }【运行结果】 交换前10 20 交换后10 20 【分析】 实参a和b是main方法中的两个变量其分配的内存空间在main方法的栈(一块特殊的内存空间)中而形参x和y是swap方法中的两个变量x和y的内存空间在swap方法运行时的栈中因此实参a和b 与 形参x和y是两个没有任何关联性的变量在swap方法调用时只是将实参a和b中的值拷贝了一份传递给了形参x和y因此对形参x和y操作不会对实参a和b产生任何影响。 对于基本数据类型来说形参相当于实参的拷贝即传值调用。 【解决办法】 传引用数据类型参数如数组因为引用数据类型在内存中存储的是地址值指向在堆内存中申请的一片内存。 例子2 public class TestMethod {public static void main(String[] args) {int[] arr {10, 20};swap(arr);System.out.println(arr[0] arr[0] arr[1] arr[1]);}public static void swap(int[] arr) {int tmp arr[0];arr[0] arr[1];arr[1] tmp;} }// 运行结果 arr[0] 20 arr[1] 102、方法重载 2.1、为什么需要方法重载 首先如果我们定义一个函数add()实现两个整数的相加但后面如果想实现两个浮点数的相加时会因为参数的数据类型的不同导致报错。 例子1 只有我们重新写一个方法定义形参的数据类型是double的方法才能实现但是这种形式的缺点就是需要命名不同的方法名并且容易记忆混乱那么可以直接使用同一个方法名吗由此引出方法重载。 2.2、方法重载概念 在日常交流中一个词语如果有多重含义比如喜欢情侣之间说喜欢与子女对父母说喜欢这个词语的含义是不同的这个时候我们可以认为该词语含义被重载具体代表什么意思就需要结合具体的场景。 java 中如果多个方法的方法名相同参数列表不同与返回值无关则称这几种方法被重载了。 其中参数列表不同包括个数不同类型不同顺序不同。 例子 之后调用该方法时通过 IDEA 会有提示根据需要传入的实参类型选择相应的方法。 【注意事项】 方法名必须相同。参数列表必须不同参数个数/参数类型/参数的次序。多个方法必须定义在同一个类中。与返回值类型是否相同无关。如果仅仅因为返回值类型不同是不能构成重载的。编译器在编译代码时会对实参类型进行推演根据推演的结果来确定调用哪个方法。 2.3、方法签名了解 在同一个作用域中不能定义两个相同名称的标识符但是在类中可以定义方法名相同的方法。 是因为有方法签名的存在。 方法签名即是经过编译器编译修改之后方法最终的名字。具体方式方法全路径名参数列表返回值类型构成方法完整的名字。每一个方法都有签名。 将编写的代码经过编译后会生成.class文件在该文件所在的目录下打开命令行窗口输入javap -v 字节码文件名即可 例子 public class TestMethod {public static int add(int x, int y){return x y;}public static double add(double x, double y){return x y;}public static void main(String[] args) {add(1,2);add(1.5, 2.5);} }生成的字节码文件 方法签名中的一些特殊符号说明 3、递归 3.1、递归的概念 一个方法在执行过程中调用自身就称为“递归”。递归相当于数学的“数学归纳法”有一个起始条件然后有一个递推公式。 递归条件将原问题划分成其子问题子问题。 3.2、递归练习 按顺序打印一个数字的每一位(例如 123打印出 1 2 3 ) public class Test03 {//按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)public static void print(int n){if(n 9){print(n / 10);}System.out.print(n % 10 );}public static void main(String[] args) {print(123);} }【分析】 递归求 1 2 3 … 10 //递归求 1 2 3 … 10 public static int fac(int n){if(n 1){return 1;}else{return nfac(n-1);} }写一个递归方法输入一个非负整数返回组成它的数字之和.
例如输入 1729, 则应该返回1729它的和是19 public static int sum(int n){while(n 9){return n % 10 sum(n/10);}return n % 10; }求斐波那契数列第 n 项 第一项从 1 开始1 1 2 3 5 8… public static int fib(int n){if(n 1 || n 2){return 1;}else{return fib(n-1) fib(n-2);} }非递归 if(n 1){return 1; } if(n 2){return 1; } int n1 1; int n2 1; int n3 0; while(n 2){n3 n1 n2;n1 n2;n2 n3;n–; } return n3;第 1 项从 0 开始 0 1 1 2 3 5 8 public static int fib(int n){if(n 1){return 0;}if(n 2){return 1;}return fib(n-1)fib(n-2); }非递归 if(n 1){return 0; } if(n 2){return 1; } int n1 0; int n2 1; int n3 0; while(n 2){n3 n1 n2;n1 n2;n2 n3;n–; } return n3;递归求解汉诺塔问题 有3根柱子ABCA柱上放N个盘子上面小下面大 问题 把A柱上所有盘子挪到C柱上可以借助B柱 过程中所有柱子上的盘子也要下面大上面小且一次只能移动一个盘子。 // 定义一个方法用于解决汉诺塔问题 public static void hanoi(int n, char source, char auxiliary, char target){// 如果只有一个圆盘直接将其从源柱移动到目标柱if (n 1) {System.out.println(Move disk 1 from source to target);return;}// 先将 n - 1 个圆盘从源柱借助目标柱移动到辅助柱hanoi(n - 1, source, target, auxiliary);// 再将第 n 个圆盘从源柱移动到目标柱System.out.println(Move disk n from source to target);// 最后将 n - 1 个圆盘从辅助柱借助源柱移动到目标柱hanoi(n - 1, auxiliary, source, target); }分析 把n-1个盘子从源柱子借助目标柱子移动到辅助柱子。把第n个盘子从源柱子移动到目标柱子。把n-1个盘子从辅助柱子借助源柱子移动到目标柱子。 时间复杂度O(2supn/sup) 如n4时 将上面 3 个盘子从源柱 A 借助目标柱 C 移动到辅助柱 B 将第 4 个盘子从源柱 A 移动到目标柱 C 将辅助柱 B 上的 3 个盘子借助源柱 A 移动到目标柱 C