Java的零散知识点(参数传递,递归,for循环,构造器,封装...)

参数传递的机制

引用类型传递,比如类的类型 在main方法中赋给形参,赋的是地址,对象操作实际就是在操作main方法中的变量,基本数据类型,调用赋值的是数值,不是地址

for循环

第一个条件可以不赋值,不用定义,如果赋值,变量调用不了,在括号里面,如果在for中没有定义,变量使用范围i++ 就可以出去了,后面还可以直接用

//如果是上面这种,i=1
for (int i = 1; i < arr.length; i++) {
			if (minValue > arr[i]) {
				minValue = arr[i];
			}
			a=i;
//如果写成下面这种			
int i = 1
for (; i < arr.length; i++) {
			if (minValue > arr[i]) {
				minValue = arr[i];
			}
			b=i;
//后面的i++还是可以用的,到时候退出i=arr.length

对象必须要在main入口处调用才可以使用,要先new创建对象然后调用

递归

计算f(n)就需要把后面的表达式调一下调到相对于的f(n)的表达式
常见递归问题:汉诺塔问题(附代码)

public class Hanoi1
{
	private int n;
	private String a;
	private String b;
	private String c;
	
	public void move(int n , String a ,String b ,String c)
	{
		if(n<1)
		{
			System.out.println("Wrong Number <0");
		}
		else if(n == 1)
		{
			System.out.println(a + ">>"+ c);
		}
		else
		{
			this.move(n-1, a, c, b);
			System.out.println(a + ">>"+c);
			this.move(n-1, b, a, c);
		}
	}
 
}

兔子问题(附代码)
(斐波那契数列)

public class Test{
	public static void main(String[] args){
		int i = 1;
		for(i=1;i<=20;i++){
			System.out.println("兔子第"+i+"个月的总数为:"+f(i));
		}
	}
	public static int f(int x){
		if(x==1 || x==2){
			return 1;
		}else{
			return f(x-1)+f(x-2);//此时就是f(x)=f(x-1)+f(x-2)
		}
	}
}
例:已知有一个数列:f(0) = 1,f(1) = 4,f(n+2)=2*f(n+1) + f(n),
其中n是大于0的整数,求f(10)的值。
	public int f(int n){
		if(n == 0){
			return 1;
		}else if(n == 1){
			return 4;
		}else{
//	return f(n + 2) - 2 * f(n + 1);此时就是要把f(n)整体都减去2,就得出以下式子
			return 2*f(n - 1) + f(n - 2);
		}
	}

还有快速排序也是递归,就不附代码了。

递归,就是方法体,自己调用自己,那么就有一个问题,方法体(非main方法),可不可以调用其他方法,经过验证是可以的,然后在被main方法调用。

return 后面不可以声明执行语句,但可以执行表达式语句

封装性

最底层的人提供api给Java的程序员,Java程序员做好项目提供用户,大家只要知道一个接口就可以了。(理解)
低耦合,外面的人需要什么就暴露出来什么入口调用,相当于一个功能按钮对应

如果加了限制符private只能通过调用方法,加入对属性的限制条件(逻辑语句)。

调用形参进行赋值不可以 对象. 属性 直接调,提供方法作为一个形参入口来调属性,private的变量真实存在,相当于隐身了,new后堆中依然有这个变量,只是权限范围很小,栈中局部变量 不可以直接调用堆中的 成员变量,需要通过方法调用

封装后只能调用形参方法进行赋值,要想知道legs的值需要提供另外一个方法,return来返回值,才可以获得

封装性有几个体现
私有化属性
私有化方法,方法不可调用,内部类用自己用
单例模式,构造器

权限修饰符来修饰实现封装性
default是缺省,四个访问权限修饰符
修饰 类 只能 缺省,public
内部类就四个修饰符都可以

不同的包class可以重名,private同一个类,可见性的大小,相当于贴了一个标签,可见性标签

当封装后,set和get功能不要写在一起,不然就是有个别人起名字,又问别人叫什么,乱套了,要分开写比较人性化

构造器

任何一个类都有构造器 constructor 建设者

作用: 建造对象 创建对象 初始化对象的信息

如果没有显式定义类的构造器,系统提供一个空参的构造器
初始化对象的方法或属性,常见是初始化属性通过构造器形参

一个类可以有多个构造器,构造器在一个类中构成重载,一旦定义了构造器,系统不在提供默认的构造器
相当于没有就给你,有了就不给你了

对象或者类来调方法,方法相当于是功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值