发表于: 2017-09-11 21:05:21
1 776
今天学习的内容:
属性:在类中定义,一般为 类型+属性名称,如:String name;
方法:给类增加描述,或者对属性增加操作,分为有无返回值,有无参数等种类。
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//坑队友,无返回值,无参数
void keng(){
System.out.println("坑队友!");
}
//获取护甲值,armor是返回值,类型是float
float getArmor(){
return armor;
}
//增加移动速度
void addSpeed(int speed){
//在原来的基础上增加移动速度,int speed是参数
moveSpeed = moveSpeed + speed;
}
public static void main(String[] args) {
Hero garen = new Hero();
garen.name = "盖伦";
garen.moveSpeed = 350;
garen.addSpeed(100);
}
}
字面值:给基本类型的变量赋值的方式叫做字面值。
作用域:
(1)如果一个变量被声明在类下面,变量就叫做字段 或者属性、成员变量、Field。其作用域就是从其声明的位置开始的整个类。
(2)如果一个变量,是声明在一个方法上的,就叫做参数。参数的作用域即为该方法内的所有代码,其他方法不能访问该参数,类里面也不能访问该参数。
参数举例:
public class HelloWorld {
public void method1(int i){ //参数i的作用域即方法method1
System.out.println(i);
}
public void method2(){
System.out.println(i); //method2 不能访问参数i
}
int j = i; //类里面也不能访问参数i
}
(3)声明在方法内的变量,叫做局部变量。其作用域在声明开始的位置,到其所处于的块结束位置。注意与参数区分,参数是声明在方法上而不是方法内。
局部变量举例:
public class HelloWorld {
public void method1() {
int i = 5; //其作用范围是从声明的第4行,到其所处于的块结束12行位置
System.out.println(i);
{ //子块
System.out.println(i); //可以访问i
int j = 6;
System.out.println(j); //可以访问j
}
System.out.println(j); //不能访问j,因为其作用域到第10行就结束了
}
}
final:当一个变量被final修饰的时候,该变量只有一次赋值的机会。
增强型循环:
增强型for循环在遍历一个数组的时候会更加快捷。
public class HelloWorld {
public static void main(String[] args) {
int values [] = new int[]{18,62,68,82,65,9};
//常规遍历
for (int i = 0; i < values.length; i++) {
int each = values[i];
System.out.println(each);
}
//增强型for循环遍历
for (int each : values) {
System.out.println(each);
}
}
}
复制数组:
public class HelloWorld {
public static void main(String[] args) {
int a [] = new int[]{18,62,68,82,65,9};
int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
//通过数组赋值把,a数组的前3位赋值到b数组
//方法一: for循环
for (int i = 0; i < b.length; i++) {
b[i] = a[i];
}
//方法二: System.arraycopy(src, srcPos, dest, destPos, length)
//src: 源数组
//srcPos: 从源数组复制数据的启始位置
//dest: 目标数组
//destPos: 复制到目标数组的启始位置
//length: 复制的长度
System.arraycopy(a, 0, b, 0, 3);
//把内容打印出来
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
}
}
方法二应该是java中复制数组的方式,比方法一便捷一些。
还有arrays工具类,可进行排序,查找,复制填充等功能。
类和对象:
引用:
举例:
new Hero();
代表创建了一个Hero对象
但是也仅仅是创建了一个对象,没有办法访问它,为了访问这个对象,会使用引用来代表这个对象。
Hero h = new Hero();
h这个变量是Hero类型,又叫做引用,=的意思指的h这个引用代表右侧创建的对象,“代表” 在面向对象里,又叫做“指向”。
存在多个引用指向同意对象,但一个引用只能指向一个对象,如果没有任何手段控制和访问一个对象,那么该对象就变得没有意义。
继承:
代表一个类可继承已经设计好的类中的某些属性,而不用从新设计定义。例如:
public class Item {
String name;
int price;
}
public class Weapon extends Item{
int damage; //攻击力
public static void main(String[] args) {
Weapon infinityEdge = new Weapon();
infinityEdge.damage = 65; //damage属性在类Weapon中新设计的
infinityEdge.name = "无尽之刃";//name属性,是从Item中继承来的,就不需要重复设计了
infinityEdge.price = 3600;
}
}
重载:方法的重载指的是方法名一样,但是参数类型不一样。
构造方法:方法名和类名一样(包括大小写),没有返回类型。
实例化:通过一个类创建一个对象,它是通过构造方法(又称构造器)实现。
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//带一个参数的构造方法
public Hero(String heroname){
name = heroname;
}
//带两个参数的构造方法
public Hero(String heroname,float herohp){
name = heroname;
hp = herohp;
}
public static void main(String[] args) {
Hero garen = new Hero("盖伦");
Hero teemo = new Hero("提莫",383);
}
}
ps:部分知识点在C中已经接触,如操作符,数据类型等,在此不做记录。
明日计划:今天先记录这么多,消化一下,明天继续学习。
评论