前言:
本文章需有一定的C基础和面向对象思想。
javase:最标准的java语言,是做电脑上运行的软件
javaee:无非在标准java上多了一些API,用来做服务器(网址)
javame:无非又多了一些API,供移动设备,嵌入式设备开发
真的只是浅谈~
jre:java运行时环境,计算机运行java程序时的环境(java跨平台强的原因),jre内含vm虚拟机
jdk:java语言开发工具包,是java的核心,包含jre和许多API
JDK包含的基本组件包括:
javac:编译器,将源程序转成字节码
jar:打包工具,将相关的类文件打包成一个文件
javadoc: 文档生成器,从源码注释中提取文档
jdb:debugger,查错工具
java:运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsol:Java进行系统调试和监控的工具
将方法和字段一起包装到一个单元中,单元以类的形式实现,能做到信息隐藏,隐藏对象的实现细节,具体的隐藏(访问修饰符),“定义类,定义其属性、方法的过程称为封装类”。
四中访问修饰符:
访问权限:
封装private属性时,一般要为每个属性创建赋值方法和取值方法(也就是set()方法来为这个属性赋值,get()方法来获取这个属性的值,以便其其它类可以对此属性进行访问)。
Demo:
public class Student{
private age;
public void getage(){
};
private void change_age(){
};
public void askage(){
change_age();
}
//在其他类中:
public class Demo {
public static void main(String[] args) {
Student stu = new Student;
Student.age = 10;//错误!!!属于其它类对age访问,访问不到
Student.getage();//属于getage对age访问,可以访问到
Student.change_age();//属于其它类对change_age访问,访问不到,chang_age也是private
Student.askage();//属于askage对change_age访问,可以访问到
}
}
构造方法为对象初始化时赋初值,new实例化对象时自动被调用。
语法规则:
构造方法可重载,函数名一样,参数不一样。不写构造方法时有默认的无参构造方法。
Demo:
class Student
{
private int age;
String name;
double score;
Student(){
//方法可重载,函数名一样,参数列表不同
System.out.println("构造方法1被调用");
}
Student(int newage,String newname){
System.out.println("构造方法2被调用");
age = newage;
name = newname;
}
Student(int newage,String newname,double newscore){
System.out.println("构造方法3被调用");
age = newage;
name = newname;
score = newscore;
}
}
public class Demo1 {
public static void main(String[] args) {
Student stu1 = new Student(18,"xyb",98.5);
Student stu2 = new Student();
Student stu3 = new Student(18,"xyb");
}
}
Demo:
class Student
{
private int age;
String name;
double score;
static int data;
Student(int age,String name,double score){
System.out.println("构造方法被调用");
this.age = age;
this.name = name;
this.score = score;
}
}
public class Demo1 {
public static void main(String[] args) {
Student stu1 = new Student(18,"xyb",98.5);
stu1.score = 10;
}
}
static关键字注意事项:
Demo:
class Student
{
private int age;
String name;
double score;
static int data;
static{
//静态代码块先于构造方法,只会被执行一次
System.out.println("静态代码块");
data = 100;
}
static void test(){
//System.out.println(this.age);
System.out.println(data);
}
Student(int age,String name,double score){
System.out.println("构造方法3被调用");
this.age = age;
this.name = name;
this.score = score;
}
}
public class Demo1 {
public static void main(String[] args) {
Student stu1 = new Student(18,"xyb",98.5);
stu1.score = 10;
Student.data = 10;//访问static关键字修饰的成员,直接用类名,可不用对象名
System.out.println("ret="+add(1,3));
}
static int add(int a,int b){
return a+b;
}
}
在java中,同一个类可以有同名而不同参的方法称为重载方法(overload)。
打包的意义:
所有程序员都可以编写属于自己的java包,公司一般采用域名倒置作为包的前缀。
示例图↓
Demo:
class Person{
String name;
String address;
public void eat(){
System.out.println(name+"吃饭");
}
public void drink(){
System.out.println("喝水");
}
}
class Student extends Person{
//继承于人