1,byte字节范围问题
byte的范围是-128到127,
最大数值为127:计算方法如下,用原码表示为 0111 1111,所以是2^7-1;(第一位数是符号位,表示正负)
最小值是-128:计算方法如下,用原码表示为是 1000 0000
2,switch问题
switch(表达式)中,表达式如果是基本数据类型可以接收byte,short,char,int,
如果是引用数据类型可以接收枚举 (JDK1.5)String字符串(JDK1.7)
3,关于数据调用问题
基本数据类型的调用不会改变原来的值:当调用完毕函数的时候,会出栈,此时局部变量也会调出内存;
引用数据类型调用的时候会改变原来的值:调用函数-->栈中为函数分配空间-->函数改变堆中的内容-->调用完毕,函数出栈-->堆中的内容保存
4,成员变量和局部变量:
成员变量:在类中方法外,属于对象,存放在堆中,有默认的初始值;
局部变量:在方法内,属于方法,存放在栈中,没有默认的初始值(必须自己定义初始值);
注意事项:当两之者名称一样时,采用就近原则;
5,匿名对象
匿名对象是指:没有名字的对象 "例如:new Person()",当只调用一次的时候可以使用,也可以作为实际参数来传递 "例如:void Test(new Person)"
6,private和封装
private修饰符修饰的变量只能本类中进行访问,外部需要访问时,可以设置两个方法getXXX(),setXXX();于是就完成了对象的简单封装。案例如下:
Class Persion{
public String name;
private int age;
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
7,为什么要使用this关键字
在封装的过程中,习惯 成员变量 和 局部变量的名字相同,这种情况下使用this关键字可以标注成员变量,避免了由于重名和就近原则带来的困扰。
在上面的例子中,如果不适用this关键字,就变成了age = age。这种情况下,相当于局部变量自己给自己赋值.
8,构造方法
构造方法的特点:方法名和类名完全一样;没有返回值,没有void;没有返回值return;
构造方法的作用:一般是用于数据的初始化;
9,重载的定义
第一,方法名相同;第二,参数的个数,顺序,类型不同;第三,与返回值无关;
10,回顾内存的存储顺序
案例:
class Demo1_Student {
public static void main(String[] args) {
Student s = new Student();
s .show();
}
}
class Student {
private String name = "张三";
private int age = 23;
public Student() {
name = "李四";
age = 24;
}
public void show() {
System.out.println(name + "..." + age);
}
}
步骤,1,class Demo1_Student加载入方法区;2,main方法进栈,3,class student进入方法去;4,栈中声明一个Student类型的引用; 5,堆中创建一个student对象,6,堆中初始化name和age,初始值时null和0; 7,给name和age分别赋值为张三和23; 8,构造方法进栈,修改堆中name和age的值为李四和24,构造方法出栈;8,student引用指向堆中的student对象; 9,show方法入栈,调用完毕再出栈;
11,static的用法
static修饰的成员变量存储在 该类 在特定方法区地址内的静态区中,所以赋值一次之后,该变量就一直保持这一个值不变;
main方法中不能直接调用本类中的非静态方法,但是可以直接创建本类对象,再调用非静态方法;
main方法中调用本类中静态方法可以直接调用,例如:类名. 方法名();类名可以省略,系统会默认自动加上;
12,Math中random的使用
如果随机取值0.000000-0.999999数字:利用Math.rangdom();
如果随机取0-99数字:利用(int)Math.random()*100;
如果随机取0-100数字:利用(int)Math.random()*100+1;
网友评论