- 原始准备与输出
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
- 能够让你三心二意又不会伤害到别人:即使不做操作,之后有改动的余地
- 检查值,退回不合理值,抛出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各种子类,照常使用
参数和返回类型也可以多态。
//如果没法看到源代码,可以用子类来重新设计
三种方法保证类不被继承
- 存取控制
- final表示继承树末端
- 类只做出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+\快捷键打开注释。
窗口设计