Head First Java 提纲笔记

  1. 原始准备与输出
public class a65 { //必须和.java的文件名一样
        public static void main(String [] args) {
        int a=10;b=5;
        		System.out.print("What Hath God Wrought!");	
        		System.out.print("What Hath God Wrought!"+a+b);	//显示105
        } 
} 

2.输出的另一种格式

int x=10;
System.out.print("原样输出"+x);
  • 第二章 对象

对象的状态:实例变量
对象的行为:方法
类的基本创建方法相同
创建对象时,存放在堆内,且虚拟机察觉到你不再使用时,就会标记为可回收,内存不够时就会被回收

杂:
java的注释与C++相同,C相同
数组的基本方式也一样,不过偏向[]在变量名之前,int a[] int []a都可以
数组的声明

String[] pets={"Fido","what"};//前面
  • 第三章 变量
    变量类型:主数据类型引用类型

primitive主数据类型
long 64位
int 32
short 16
byte 8

float 32
double 64
final int ASD//常量命名

不能作为全局

类方法变量的命名规则
字母,下划线,$符号开头
之后可用数字
import static java.lang.Math.*;//引用数学函数

double d=12.8;
int d1=(int)d;//12
int d2=(int)Math.round(d);//13

字符串

//剪切字符串
String s="asas";
String s1=s.substring(0,3);//第二个参数:第一个不想复制的元素

//拼接字符串
+直接拼接
//用定界符分隔
String all=String.join("/",s1,s2,"ausuhaud");

null与空串

if(str.Length()!=0||str!=NULL)

第四章
引用是引用到对象的变量,形式可以理解为遥控器或者是指针
对象存放在堆里

Dog myDog = new Dog();

1.声明一个引用变量
2.创建对象
3.连接对象和引用

一旦声明成final 就只能指向一个特定对象
依然是类-对象
唯一引用与NULL?

无论数组内的类型,数组都是引用变量
数组

int []a=new int[100];
int a[];

for(int x:a){
	print(x+"\t");
}//这样的当然不能改变值
for(int i;i<a.length;i++){
	print(a[i]+"\t");
}

int []a;

a=new int[]{1,2,3,4,5,6};//重新初始化
Array.sort(a)//快速排序

,主函数的参数

创建数字数组,初始值为0,创建字符串数组,初始值为NULL(不是空串),空串是“”
不能通过a++来得到下一个元素,那么再赋呢

对象的行为:类函数(C++)
对象的实例变量:类成员变量(C++)
方法依然是传入形参,函数体内叫实参

JAVA值传递,拷贝传递
依然只能返回一个值,但是可以忽略返回值

封装:
将实例变量标记为private
将getter()与setters()标记为public

  1. 能够让你三心二意又不会伤害到别人:即使不做操作,之后有改动的余地
  2. 检查值,退回不合理值,抛出exception

实例变量声明在类中,局部变量声明在方法中
实例变量有默认值,局部变量没有
==既可以表示primitive主数据类型,还可以表示引用变量是否指向同一个的对象
类的构造器:(构造函数)与C++区别:在方法内不要声明与实例变量同名的局部变量

方法的隐式变量:调用这个方法的类实例
显式变量:()内的

一个私有的数据域
一个公有的域访问方法
一共公有的域改变方法

私有与公有:如果要改变,那么如果是私有,则可以删掉,与外界确定的无关
final实例域:设置为final则在构造时必须初始值

不可变类:每个方法都不改变其对象的值,只不过对象可以更改

private static int id=0;//静态域:静态变量
public static final double PI=3.14;//静态常量

静态方法则没有隐式变量,不能使用对象操作。

第五章

//for in for each 循环
for(int cell : loacation){//for的新用法:java5.0用法
	if(guess == cell)
		int guess = Interger.parseInt(String1);
}

玩家猜格子问题:bug玩家可以重复的猜一个已猜中格子来胜利
唯一的办法就是标记已经猜中的格子:
方案一:二维数组,第二维01
方案二:被命中的格子改为-1
方案三:一个在数组删除元素时自动缩小–>ArrayList对象

.add(Object etem) //加入对象参数
remove(int index) //索引参数中移除对象
remove(Object elem) //索引参数中移除对象
contains(Object elem)//和参数匹配返回ture
isEmpty()//空返回ture
indexOf(Object elem)//返回对象参数的索引或-1
size()//返回list元素数
get(int index)//返回索引参数对象

&& ||与或:短运算符 != ==
& | 长运算符:强制计算两边的值,但一般用来位运算

第六章
JAVA API类包装在包中

java.util.ArrayList//完整名称:包.类
//1
import java.util.ArrayList;
//2 打出全名

和include不同,,只是省下包的名称,和C++类似吗?不吧???
除了java.lang包里的类:嫡系,都要import
还有String 与java.lang.System

第七章
多态:继承(C++的虚继承?)
当子类.运算符时,最近优先

HAS-A成立:实例变量与类
IS-A成立(是一个单向联系,反向则不可以):子类-父类:
必须搞清楚才可以使用继承
格式·

public class a1 extend a{
}

依然:父类不可能使用子类方法(但是C++指针引用都可以)
不,这回都可以了

Animal mydog = new Dog();

Animal 数组可以new各种子类,照常使用
参数和返回类型也可以多态。
//如果没法看到源代码,可以用子类来重新设计
三种方法保证类不被继承

  1. 存取控制
  2. final表示继承树末端
  3. 类只做出private构造程序

防止方法被覆盖也可以用final
这样的话,可以有子类吗,子类覆盖会出错吗?

覆盖方法必须相同参数和返回值,而且不能降低存取权限,可以增加吗??
可以写出函数名相同,其他不同的函数,但是不算覆盖,可以愿意运行吗

正式的重载:
不能只改变返回类型,可以更改存取权限

存取权限:
private 成员不会被继承
default
protected
public 成员会被继承

第八章 接口与抽象类
“如果没有接口,要怎么活下去?”

防止类被初始化:纯虚类
加关键词:

abstract public class Animal //类
public abstract void eat();//抽象方法:必须被覆盖

抽象类可以有静态成员static–具体类
非抽象类不能有抽象方法

抽象的方法,没有内容,只是为了标记多态而存在
所以继承树结构的第一个具体类要实现所有的抽象方法
但是其他的抽象类可以截胡,替子类把函数填错了,也可以标一个abstract转嫁到子类。

跳出多重循环:

read_data://紧挨着希望跳出的循环
for(){
}
break read_data;

byte:-128~127
short:-32,768~32767

记得主函数里创建空类时格式

ran r=new ran();

在主函数里不能使用非静态方法,要使用,再新建一个类,在类中构建方法,使用时在主函数创建一个新类

ctrl+o 打开快速滚动

方法一、使用Ctrl+Shift+C快捷键
1、在Eclipse中拖动鼠标,选中需要注释的代码。
2、按住Ctrl+Shift+C快捷键。
3、会发现所选代码被“//”注释掉。当调试完后,可再次按住Ctrl+Shift+C快捷键打开注释。
方法二、使用Ctrl+/快捷键
1、在Eclipse中拖动鼠标,选中需要注释的代码,通常为连续多行代码。
2、按住Ctrl+/快捷键。
3、会发现所选代码被“//”注释掉。当调试完后,可再次按住Ctrl+/快捷键打开注释。
方法三、使用Ctrl+Shift+/快捷键
1、在Eclipse中拖动鼠标,选中需要注释的代码。
2、按住Ctrl+Shift+/快捷键,如图所示。
3、会发现所选代码被“/* */”注释掉。
4、当调试完后,可按住Ctrl+Shift+\快捷键打开注释。

窗口设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值