Java学习小日记

问题收集

1 并置运算
2数组可以在内存空间连续存储任意一组数据(好像不可以)
3 键-值?
4String

学习记录

第一章

编译器(javac.exe)编译解释字节码文件
解释器(java.exe)翻译执行字节码文件
源文件扩展名java
字节码扩展名class

第二章

  • 变量不能以数字开头

第三章

  • 整数运算只能是整数
  • 字符串是作为对象出现的

第四章

  • &&两个都是1才是1
  • ||两个都是0才是0
  • 引用数据类型:数组,类,接口
  • 数组
  • 声明数组(左边)[ ]不许指定元素个数
  • int[] a=new int[5];
    int[] a=new int[]{1,1,1,1,1};
    int[] a=new int[5]{1,1,1,1,1};
  • 数组初始化默认值是0

4.2break

感悟这个break!

package Exercise;

public class E {
	public static void main(String[] args) {
		char c='\0';//0是什么意思啊!有没有好像都一样。
		for(int i=1;i<=4;i++) {
			switch(i) {
			case 1: c='新';
				System.out.print(c);
			case 2:c='亲';
				System.out.print(c);
				break;
			case 3:c='斤';
				System.out.print(c);
			default:System.out.print("!");
			}
		}
	}
}

输出:新亲亲斤!!

4.3 抽奖

if括号里面是布尔类型!
JudgeAward.java

package Exercise;

public class JudgeAward {
	void giveMess(int number) {
		if (number==9||number==131||number==12) {
			System.out.println(number+"是三等奖");
		}
		else if(number==209||number==596||number==27) {
			System.out.println(number+"是二等奖");
		}
		else if(number==875||number==216||number==56) {
			System.out.println(number+"是一等奖");
		}
		else {
			System.out.println(number+"未中奖");
		}
	}

}

E.java

package Exercise;

import java.util.Scanner;
public class E {

	public static void main(String[] args) {
	Scanner reader=new Scanner(System.in);
	System.out.println("输入正整数后回车确认");
	int number =reader.nextInt();
	JudgeAward A=new JudgeAward();
	A.giveMess(number);
	}
}

4.4 算电费

switch后面只能是整形嗷!
Electricity.java

package Exercise;

public class Electricity {
	double cost;
	//if里面判断,悟道了
	//我好想写if(1<=e<90)
	void getcost(double e) {
		if(1<=e&&e<90) {
			cost=0.6*e;
		}
		else if(90<=e&&e<150) {
			cost=54+(e-90)*1.1;
		}
		else if(e>=150) {
			cost=122+(e-150)*1.7;		
		}
		System.out.println("费用为:"+cost);
	}
}

E.java

package Exercise;

import java.util.Scanner;
public class E {
	public static void main(String[] args) {
	Scanner reader=new Scanner(System.in);
		System.out.println("输入用电量后回车确认");
		int e =reader.nextInt();
		Electricity A=new Electricity();
		A.getcost(e);
	}
}

4.5打印大小写字母表

package Exercise;

public class E {
	public static void main(String[] args) {
	char ch1='A',ch2='Z';
	for(char c=ch1;c<=ch2;c++) {
		System.out.print(c);
	}
	System.out.println("");
	char ar1='a',ar2='z';
	for(char c=ar1;c<=ar2;c++) {
		System.out.print(c);
	}
	}
}

4.6 找1000以内“完数”

package Exercise;

public class E {
	public static void main(String[] args) {
		int sum=0;
		for(int i=1;i<=1000;i++) {
			
			for(int a=1;a<i;a++) {
				if (i%a==0) {
					sum=sum+a;
				}
				}
			if(sum==i) {
				System.out.println(i);
			}
			sum=0;
		}
	}
}		

4.7

package Exercise;

public class E {
	public static void main(String[] args) {
		int i=1;
		int sum=0;
		int x=1;
		while(sum<=9876) {
			x=x*i;
			sum=sum+x;
			i++;
		}
		System.out.println(i-1);
	}
}

第五章

这样打好累啊555不适合考试,我要去写题了,第五章好难555

  • import写在包和类中间
  • 类可以做变量(好像)
  • 构造函数(构造方法)
  • 构造方法是一种特殊的方法,具有以下特点。

    (1)构造方法的方法名必须与类名相同。
    (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
    (4)构造方法不能由编程人员调用,而要系统调用。
    (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。
    (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
  • 没有static就是实例·
  • this

    懒得复制了this!!!
    1、区分成员变量和局部变量,用this就表示成员变量
    这个写的好好!
public class ThisDemo {
        public static void main(String[] args) {
            Student s=new Student("小明明",20);
            System.out.println(s);
        }
    }
    class Student{
        String name;
        int age;
        public Student(String name, int age) {
            //注:没有加this
            name = name;
            age = age;
        }
        @Override
        public String toString() {
            return "Student [ name=" + name + ", age=" + age +"]";
        }
    }

打印出来没有赋值,说明是用成员变量给成员变量赋值了
我还是不会

  • this不在类方法里
  • 访问权限 用来修饰变量和方法
    在这里插入图片描述
    子类在同一包中能继承友好,但在不同包只能继承公共和保护

第六章

  • 一般要打个public!不能降低方法的访问权限。
  • 成员变量的隐藏:如果声明的成员变量和继承来的同名,就会隐藏掉继承的。如果掉用继承的方法还是可以调用隐藏的成员变量。
  • 上转型:子类创建一个对象并把这个对象的引用放到父类的对象中。上转型对象不能操作子类新增,可以操作隐藏继承重写。
  • abstract类
  • ab类可以没有ab方法
  • 不能用new创建对象
  • ab可以声明一个变量,用子类去创建它,用子类调用方法
  • super
  • 继承来的变量和方法被隐藏了就不能被子类对象所使用了,此时可以用super调用。
  • 子类的构造方法必定会调用父类的构造方法,如果在子类的构造方法中没有指定调用父类的哪个构造方法,在实例化子类对象时,子类会默认调用父类的无参构造方法。如果在父类中没有定义无参构造方法的话,编译会报错。
  • 子类不能继承父类的构造方法!如果是默认的构造方法,第一行用super()
  • final

第七章

接口

  • 接口体包含常量(没有变量)和抽象方法(只有抽象方法,没有普通方法)。
    常量:public 可以省略
    方法:public 可以省略 abstract

  • 接口实现 要重写所有抽象方法,要明显地写public
  • 如果一个类声明实现一个接口,但是这个类没有重写接口中的所有方法,那么这个类是抽象类!

  • 接口声明的变量是接口变量,是引用型变量,存放实现接口的类的实例引用(有够绕的,我自己打的,我悟到了)
  • 接口声明一个接口变量!?
  • 接口回调 其实就是接口变量new一个类,就存放了一个对象的引用,这个对象调用方法,这个方法是重写的,那么就叫回调了!
  • 接口无法调用类中的其他非接口方法(看不懂),可能是上面这个东西,他是接口变量,不能调用不是接口的方法。

  • 字体改成红色了
  • 接口变量做参数
  • 参数是接口类型,实现改接口的类的实例的引用(又是他!→接口 接口变量=new 类())做参数,来回调接口方法,找到了那个类重写的方法。

  • 接口与abstract作比较
  • abstract类可以有普通方法 接口不能
  • 接口中只有常量没有变量,ab都可以
  • 如果需要继承就用ab方法

养狗狗

package dogState;

public interface DogState {
	public void showState();
}
class SoftlyState implements DogState{
	//重写
	public void showState() {
		System.out.println("在主人面前,听主人命令。");
	}
}
class MeetEnemyState implements DogState{
	//重写
	public void showState() {
		System.out.println("遇到敌人时咬他!");
	}
}
class MeetFriendState implements DogState{
	//重写
	public void showState() {
		System.out.println("遇到好朋友亲亲他~");
		}	
}

class Dog{
	DogState state;//接口变量?new dog之后类里面就有这个变量了,可以用这个变量回调接口
	//接口回调
	public void cry() {
		state.showState();
	}
	//给接口变量赋值?是这么说吗?
	public void setState(DogState s) {
		state=s;
	}
}
package dogState;

public class E {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Dog yellowDog=new Dog();//声明一个对象,这个对象里面有接口变量
		yellowDog.setState(new SoftlyState());//不是回调,这个是类的方法不是接口方法,只是接口变量?还是对象?也不知道这是啥做参数
		yellowDog.cry();//对象调用方法,方法里面有个接口回调!
		yellowDog.setState(new MeetEnemyState());
		yellowDog.cry();
		yellowDog.setState(new MeetFriendState());
		yellowDog.cry();
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值