问题收集
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();
}
}