java 基础

Java的运行机制:

首先,利用文本编译器编写Java源程序(.Java)

然后,利用编译器将源程序编译为字节码文件(.Class)

最后,利用虚拟机进行解释运行。

文件打开路径,cd.. = 进入父目录,cd + 目录 = 进入此目录,dir = 查看目录下文件,cls = 清屏,上下键 = 切换之前输入的命令。

标识符的使用规范:

表示类名的标识符:每个单词首字母大写

表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写。

数据类型:

基本数据类型:数值型,字符型,布尔型。

数值型:整数(short,int,long,byte),浮点数(float,double)

byte 1字节 范围 -2^7 -- 2^7-1(-128--127)(一位字节有八个bit,每个位有俩状态,一个字节有256个状态)

short 2字节 范围 -32768--32767

int 4字节 范围 -2^31--2^31-1

long 8字节 -2^63--2^63-1

自动转换:

范围小的数据会自动转为范围大的数据

无数据丢失的数据转换:

byte 转为 short 转为 int 转为 long 或者 double,float 转为 double,char 转为 int

int 转 float ,long 转 float ,long 转 double,会有精度的损失。

整形常量直接赋值给byte,short,char等类型时,只要不超过表数范围,可以自动转换。

方法的定义:

1.方法的定义以及调用:

方法是可以完成特定功能的代码片段

声明格式:[多个修饰符] 返回值类型 方法名(形式参数列表){方法内的多个java语句}

public static int add(int x,int y){
    return x + y;
}

2.方法的重载:

方法的重载是指一个类中可以定义多个方法名相同,但是参数不同的方法。调用时会根据不同的参数自动匹配对应的方法。

方法名相同,但是方法的内容不同。

构成方法重载的条件:1.不同的含义,形参的类型,形参的个数,以及形参的顺序不同

2.只有返回值不同不能构成方法的重载。

3.只有形参的名称不同,不够构成重载。

public static int add(int x,int y)
{
    return x + y;
}
public static int add(float x,int y)
{
    return x + y;
}
public static void add(int x,int y){
    //不能构成重载
}
public int a(int y){}
public int a(int n){}//只有形参名称不同不能重载

面向对象:

类的定义:

类包含三个常见成员:属性(静态的特征、数据)、方法(动态的行为(对数据的操作))、构造器(初始化对象)

对象就是对类的实例化

public class student{
    int data;
    String name;
    public void study(){
        System.out.println("正在学习");
    }
    public student()
    {
    }
}

构造方法:

构造方法用于创建对象时的初始化 [修饰符] 类名(形参列表){……}

1.构造器通过new关键字调用

2.构造器虽然有返回值,但是不能定义返回值的类型(返回值的类型一定为本类),不能再构造器里使用return返回值

3.如果我们没有定义构造器,编译器会自动定义一个无参构造器。如果已定义则不会自动添加无参构造。

4.构造器名称必须与类名保持一致。

public class student{
    String name;
    int studentNum;
    public student()
    {
    }
    public student (String name,int x)
    {
        this.name = name;
        this.studentNum = y;//构造器
    }
    public static void main(String[] args){
        student x = new student();
        stident y = new student("zhangsan",52);
    }
}

创建对象的内容为:为对象分配空间,并将对象成员变量初始化为0或者空。执行相关属性值的显示初始化,执行构造方法,初始化对象,返回对象的地址值给相关的变量。

栈和堆以及方法区:

栈:栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)、栈是由系统自动分配,速度快,栈是一个连续的内存空间。JVM为每个线程都创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)、栈属于线程私有不能实现线程间的共享。

堆:堆用于存储创建好的对象和数组(数组也是对象)、堆是一个不连续的内存空间,分配灵活,速度慢。JVM只有一个堆,被所有线程所共享。

方法区:方法区是JAVA虚拟机规范,可以有不同的实现。方法区实际也是堆,只用于存储类、常量的相关信息。用来存放程序中永远是不变或唯一的内容。JVM只有一个方法区,被所有线程所共享。

this 、static:

this指当前正在创建的对象,本质就是当前正在创建对象的地址

在普通方法中,this总是指向调用该方法的对象

在构造方法中,this总是指向正要初始化的对象

public class student{
    int id;
    String name;
    String psw;
    public student(int id,String name,String psw){
        this.id = id;
        this.name = name;
        this.psw = psw;
    }//在构造器中,this总是指向正在初始化的对象
}

static声明的变量为静态成员变量,类变量。

属于类,只有一份,在类被载入时被显式初始化。一般用类名.类属性方法来调用。在static方法中不可以直接访问非static成员。static修饰的属性和方法,从属于类。普通属性从属于对象。

public class stat{
    int x;
    static String name = "zhangsan";
    static{
        name = "zks";
    }
    public static void printfname()
    {//静态方法中不可以调用非静态量
        System.out.printfln(name);//静态调用,不可以用打印 x;
    }
}

静态方法可以不用实例化对象就可以使用

静态初始化块,构造方法用于对象的初始化。静态初始化块应用于类的初始化操作,可以初始化static属性,在静态初始化块中不能直接访问非static成员。

package、import:

package位于类的第一个非注释性语句,包中有一些常见的类,以及常用的类。package在java中的作用类似于“操作系统中文件夹的作用”。主要解决两个问题:多个类的管理、类的重名问题。

java中常用的包包的主要类
java.lang包含一些Java语言的核心类,String、Math、Integer、System和Thread,提供常用功能。
java.awt包含了构成抽象窗口工具集的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net包含执行与网络相关操作的类。
java.io包含能提供多种输入、输出功能的类。
java.util包含一些实用的工具类,如定义系统特性、使用与日期相关的函数。

import ,如果我们需要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。java会默认导入Java.lang包下的所有类,因此这些类我们可以直接使用。如果导入两个同名的类,只能使用包名加类名来显示调用相关类。

import java.util.*//表示调用所有的包,会降低编译速度,但是不会影响运行速度。

静态导入(import static):作用是用于导入指定类的静态属性和静态方法,可以直接使用静态属性和静态方法。

继承、方法的重写:

方法的重写,子类重写父类的方法。在继承父类的方法后,父类的方法不一定会适用于子类。这个时候子类就需要重写父类的方法。

子类可能会与父类的行为不一致,需要重写父类的方法。

public class person{
    public void printf(){
        System.out.println("人需要去上班");
    }
}
public class student extends person{
    publivc void printf(){
        System.out.println("学生需要去上学");
    }
}

在继承父类后子类就可以使用父类的变量,和父类的方法。

public class person{
public void put(){
System.out.println("人需要休息");
}
}
public class student extends person{
}
public static void main(String[] args){
    student x = new student();
    x.printf();
}

instanceof 可以判断对象是否为所用类的实例化对象。

System.out.println(x instanceof student);

final 修饰类,变量,方法:final修饰变量,变量为常量,final修饰方法,方法不可以被重写,final修饰类,类不可以被继承。final修饰父类的方法时,父类的方法不可以被重写,但是可以被重载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值