算法学习<Java>笔记
循环与递归
递归调用仅仅是被调函数恰为主调函数
注意每次调用的层次不同
注意每次分配形参并非同一个变量
注意返回的次序
Q:打印从0 - n
循环
1234567891011public class A { //打印从0到n public static void fun(int n){ //循环 for (int i = 0; i <= n; i++) { System.out.println(i); } public static void main(String[] args) { fun(9); }}
递归
1234567891011public class A { //打印从0到n public static void f(int n){ //递归 if (n>0) f(n-1); System.out.println( ...
JavaScript数组
数组
数组也是一个对象
它和我们普通对象功能类似,也是用来存储一些值的
不同的是:
普通对象是使用字符串作为属性名的
数组是使用数字来作为索引操作元素
索引(index)
从0开始的整数就是索引
数组的存储性能比普通对象要高,在开发中我们经常使用数组来存储一些数据
12345678910111213141516171819202122232425262728//创建一个数组对象var arr = new Array();//使用typeof检查一个数组时,会返回object//console.log(typeof arr);arr[0] = 10;arr[1] = 33;arr[2] = 22;// 读取数组中的元素// 语法:数组[索引]// 如果读取不存在的索引,它不会报错,而是返回undefinedconsole.log(arr[3]);// undefined// 获取数组长度// 对于连续的数组,使用length可以获取到数组的长度(数的个数)// 对于非连续的数组,使用length会获取到数组的最大索引+1// 尽量不要创建非连续数组consol ...
JavaScript对象与函数_02
作用域(Scope)
一个变量的作用范围
在JS中一共有两种作用域:
全局作用域
函数作用域
全局作用域
直接编写在script标签中的JS代码,都在全局作用域
全局作用域在页面打开是创建,在页面关闭时销毁
在全局作用域中有一个全局对象window
它代表的是一个浏览器的窗口,我们可以直接使用
在全局作用域中:
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
全局作用域中的变量都是全局变量
在页面的任意部分都可以访问的到
变量的声明提前
使用var关键字声明的变量,会在所有代码执行之前被声明
但是如果声明变量时不使用var关键字,则变量不会被提前声明
函数的声明提前
使用函数声明形式创建的函数function 函数(){}
会在所有的代码执行之前就被创建,所以可以在函数声明前调用函数
使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
函数作用域
调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
在函数 ...
Java异常
什么是异常
软件程序在运行过程中,遇到的情况不可能是非常完美的,可能会存在各种问题,我们称为异常,英文:Exception,要让我们写出的程序作出合理的处理,而不至于程序崩溃。异常发生在程序运行期间,它影响了正常程序的执行流程。
异常分类:
检查性异常
运行时异常
错误ERROR
异常处理机制
抛出异常
捕获异常
异常处理五个关键字
try,catch,finally,throw,throws
Demo.java
12345678910111213141516171819202122package cool.exception;public class Demo1 { public static void main(String[] args) { int a = 1; int b = 0; //假设要捕获多个异常:从小到大! try { //try监控区域 System.out.println(a/b); }catch (Err ...
Java面向对象
什么是面向对象
Java的核心思想就是OOP(面向对象编程)
面向过程思想:
步骤清晰简单,第一步做什么,第二步做什么
处理简单问题
面向对象思想:
物以类聚,分类的思维方式
处理复杂问题
类 = 属性 + 方法
面向对象的本质
以类的方式组织代码,以对象的形式组织(封装)数据
三大特性:
封装
继承
多态
回顾方法的定义123456789101112131415161718192021public class Demo01 { //main方法 public static void main(String[] args) { } /* 修饰符 返回值类型 方法名(...){ //方法体 return 返回值; } */ //return 结束方法,返回一个结果! public String sayHello(){ return "hello,world"; } ...
Java数组
数组的定义
数组是相同类型数据的有序集合。
数组的声明创建123456789101112131415161718192021//声明一个数组int[] nums;//1.声明一个数组int nums2[];//两种方法都可以声明一个整型数组,但建议使用第一个nums = new int[10];//2.创建一个数组//也可以这样写int[] nums = new int[10];//声明并创建一个数组//3.给数组元素赋值nums[0] = 1;nums[1] = 2;nums[2] = 3;nums[3] = 4;nums[4] = 5;nums[5] = 6;nums[6] = 7;nums[7] = 8;nums[8] = 9;nums[9] = 10;//int类型数组未赋值的元素默认值是0
获取数组长度:arrays.length。
123456//计算所有元素的和int sum = 0;for (int i = 0;i<nums.length;i++){ sum = sum + nums[i];}
内存分析
三种初始化
静态 ...
Java方法
何谓方法
System.out.println() //类.对象.方法//调用系统类中的标准输出对象out中的方法println()
方法是语句的集合,他们在一起执行一个功能
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其它地方被引用
原子性:一个方法只能完成一个功能,这样利于后期扩展
方法的调用12345678910111213//main方法public static void main(String[] args) { int sum = add(1,2); //调用方法 System.out.println(sum);}//加法public static int add(int a,int b){ return a+b;}//public表示外部类可以访问(修饰符)//static转化为类变量就可以被main方法调用(修饰符)//有返回值加void,并要有return;无返回值不加
方法类似其它语言的函数
return 0;可用来终止某个方法
...
Java流程控制
用户交互Scannernext()方法1234567891011121314151617181920package cool.ply.base;import java.util.Scanner;public class Demo02 { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接受:"); //判断用户有没有输入字符串 if (scanner.hasNext()){ //if判断非必要 //使用next方式接收 String str = scanner.next(); System.out.println("输出的内容为:"+str); & ...