package test1;
public class Demo1 {
//类体
//类体里的代码执行完之后才会执行类里定义的方法的代码
//只有定义(声明)相关的代码可以直接放在类体中
//主要是变量定义和方法定义
//*****切记不能在方法中直接定义方法**
//变量定义:
//简单格式:变量类型 变量类型;
int val1;
int val2 = 1;//整型
int valDemo;
//方法定义:
//简单格式:返回类型 方法名称(参数列表){方法体}
//void方法执行结束后返回的类型为空,即什么都不返回
static void function1() {
int val1 = 2;
int p = val1;
System.out.println(val1);
System.out.println(p);
val1 = 3; //就近使用原则:重名时使用的是前面最近定义的变量
System.out.println(val1);
}
//方法调用格式:方法名称(参数);,严格按照定义的方法格式
//方法调用的作用:去执行所调用的方法里的代码,方法结束后返回调用的位置继续执行
//参数传递:将实参依次传递给形参的过程
void function2() {
function1();
int t = 20;
function4(30, "ab");
}
void function4(int a,String b) { //形式参数变量
}
int function5() { //定义的返回类型是什么接受返回值时的返回类型就是什么
int k = 200;
return k;
}
// main方法
// public访问修饰符-共有的
// static功能修饰符-静态的
public static void main(String[] args) {
function1(); // 静态方法中不可以直接调用非静态的方法/变量;
//但非静态方法中可以直接调用静态方法和变量(涉及知识比较复杂暂时了解)
//function2();
Demo1 d1 = new Demo1(); // 如果想在静态方法中使用非静态方法类实例化产生对象、
//new 是在内存中开辟一块新的空间地址,后面跟的是构造方法
d1.function2();
System.out.println(d1.val1);// 静态变量
System.out.println(123);
int intValue = 1000;
System.out.println(intValue);
System.out.println(valk);
}
static int valk = 1000;
//static关键字定义变量和方法在JavaSE中可以使用但之后在其它的地方使用需谨慎
}
Demo1(){
}
//方法重载:在同一个类里方法名称相同,参数(类型,个数,顺序)不相同
//方法重载是根据参数进行判断的,跟返回值类型没有关系
Demo1(int a){
}
/*
Demo1(String a){
}
Demo1(int a,String b){
}
Demo1(String b,int a){
}
*/
void fun4() {
Demo1 d1 = new Demo1();
//Demo1 d2 = new Demo1(100);
//Demo1 d3 = new Demo1(100,"asdf");
}
变量和方法的使用
静态的用类来调用
//类名.静态方法
//类名.静态变量
非静态的用对象来进行调用,静态方法调用非静态方法/实例变量要进行实例化
//对象.实例方法\非静态方法
//对象.实例变量\非静态变量
在同一个类中变量和方法前的类名可以省略
//对象.静态方法()/变量;-------可以可以正确执行,但是不推荐
//类名.实例变量/方法();-------错误,不允许
//成员方法
//静态方法//main方法(静态方法的一种)
//实例方法
//构造方法
作用:用于实例化产生对象
规则:方法名称与类名相同,没有返回类型。
PS:如果类中没有构造函数,就默认有无参构造,否则只能使用已经定义的构造方法(==构造器)
public class Demo2 {
public static void main(String[] args) {
//标准使用格式 ::Demo2中使用Demo1中的变量和方法
//(在一个类中调用另一个类中的变量和方法,其前面的类名+.不可以省略)
// .被叫做调用运算符
int val = Demo1.valk;
System.out.println(Demo1.valk);
Demo1.valk = 600;
Demo1.function1();
Demo1 d1 = new Demo1(0);
d1.function4(10,"123");
System.out.println(d1.val1);
}
}
变量类型
//成员变量(java没有全局变量这个概念,实际上和成员变量一个意思)(成员就是类里的)
//静态变量(类变量)
//实例变量(非静态变量)(非静态变量和实例变量是一回事)
//局部变量
//参数变量(形式参数/实际参数)
//循环变量 (循环变量和参数变量都属于局部变量)
//作用范围(作用域){主要看‘}’}
ps:访问修饰符不能用于局部变量,可以用于成员变量。
成员变量:
1、成员变量定义在类中,在整个类中都可以被访问。
2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
3、成员变量有默认初始化值。
局部变量:<没有默认值,2必须初始化,才可以使用>
1、局部变量只定义在局部范围内,如:方法内,语句内等,只在所属的区域有效。
2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
3、局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找
实例变量:<类实例化时进行初始化>
1、对象创建时创建,对象销毁时销毁。
2、类的范围内有效。
静态变量:<类使用时会进行初始化>
1、该类首次访问时创建,程序结束时销毁。
2、该类的任何对象共用同一静态变量。