通过DOS命令运行编译java文件:
1>运行,输入cmd;
2>进入DOS界面,输入cd: 文件名路径,回车
3>输入所在盘,回车
4>输入javac java文件名.java
5>输入java java文件名
如:
一、封装:将客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的对象将属性和实现的细节进行隐藏。
封装的作用:
1>安全、方便
2>将可变性进行隔离
3>提高代码的重用性
属性的封装。见下面的代码:
class Student{
String name;
int age;
public void show()
{
System.out.println(name+",今年"+age+"岁");
}
}
public class lesson {
public static void main(String args[])
{
Student s=new Student();
s.name="许增强";
s.setAge(-20);
s.show();
}
}
如果不将age的修饰符设为private,那么在类外就可以随意更改它的值,如上,将age=-20,就会出现错误,因为年龄不可能为负数。
所以要隐藏age的属性,使其值在类外不能被随意修改。就需要加上private修饰符。
对私有成员属性进行访问的方法的命名规范:
1>public void setXxx(参数) 为参数的赋值提供接口
2>public 类型 getXxx() 获取参数值
代码修改如下:
class Student{
String name;
private int age;
public void setAge(int age)
{
if(age>=0 && age<=150)
{
this.age=age;
show();
}
else System.out.println("有这样的年龄呀~");
}
public void show()
{
System.out.println(name+",今年"+age+"岁");
}
public int getAge()
{
return age;
}
}
public class lesson {
public static void main(String args[])
{
Student s=new Student();
s.name="许增强";
//s.age=-20; age为私有成员变量,不能被类外直接访问
s.setAge(-20);
}
}
二、包:类似于操作系统中的文件夹。
1>用于对多个java文件进行分门别类的管理。
2>解决命名冲突的问题(名字相同,内容不同),操作系统对文件夹的名字不区分大小写,但是包名区分大小写。
Java程序中包的定义:
package 包名;
注意:一定要放在java程序中的第一句。
对带包的java文件进行编译:javac -d . java文件
运行时必须带上包的完整类名:java 包名.类名
包名的命名规范:
1>如果定义的包有多级:a.b.c.d(即a包中包含子包b,b包中包含子包c....),包名区分大小写。
2>包名的命名不能以纯数字命名。
3>公司做软件开发,一般会将URL地址反转作为包名。
如:蓝狐培训URL地址为:www.bluefox.com.cn。
这个时候包的命名为:cn.com.bluefox.项目名。
带包的java程序编写,以eclipse为例:
新建一个lesson工程,单击src,点击New,选中package,新建一个包com
,然后在com包中新建一个子包bluefox,方法同上,在名字中输入com.bluefox:
在bluefox中创建student类,单击com.bluefox选择New\Class,在Name中输入类名student即可:
在student类中输入:
package com.bluefox;
public class student {
String name;
int age;
public void show()
{
System.out.println("我叫"+name+",今年"+age+"岁");
}
}
同样在com包中创建一个TestStudent类,单击com选择New\Class,在name中输入TestStudent类.
在TestStudent类中输入:
package com;
public class TestStudent {
public static void main(String args[])
{
student s=new student();
s.name="许增强";
s.age=20;
s.show();
}
}
编译TestStudent,会出现编译问题:
Student是一个不能解决的类,即student类没有被导入进来。
由于TestStudent是在com包中,而student类在com包中的子包bluefox包中,不在同一阶,所以需要将student类导入到TestStudent类中才能运行。
包的导入:
1>import 包名.子包....类名;
2>import 包名.*; //将包中的所有类都导入进来
将student类导入到TestStudent类可以利用Eclipse工具导包快捷方式:alt+/和ctrl+shift+o。
package com;
import com.bluefox.student;
public class TestStudent {
public static void main(String args[])
{
student s=new student();
s.name="许增强";
s.age=20;
s.show();
}
}
编译后依然有编译问题。
TestStudent对name,age没有访问权限。
因为在student类中并没有对name,age设置访问权限,所以name,age只有在同一个包中才能访问,或者将name,age设置为public就可以被其他包中的类访问。
Student修改后如下:
package com.bluefox;
public class student {
public String name;
public int age;
public void show()
{
System.out.println("我叫"+name+",今年"+age+"岁");
}
}
运行就可以了。
由于eclipse中默认包视图为并列的,要想层次清楚,可以单击window--- Navigation---Show View menu---Package presentation---Hierarchical,
变成如下图所示:
可以清楚的看清包含关系。
eclipse中的图标:
:source folder(存放java源文件的文件夹).对于bulid path,如果单击src,点击Bulid Path后选择remove to bulid path,可以看到src、com等包都作为文件夹而存在,而不是包。
这个时候再编译就会出现:
编译器不包含main类型,因为要编译java文件是编译java的源文件。所以碰到这个错误的时候,记得将src作为一个source folder才能编译,点击src---
Bulid Path---use as source folder,这个时候编译就可以通过了。
Java中常用的包:
1>java.lang.*; 包含java编程的基本类,程序编程中自动导入
2>java.sql.*; 定义了一系列于java对数据库访问支持
3>java.util.*; 工具类,集合框架,数据结构等。
4>java.net.*; 包含实现网络编程的类
5>java.io.*; 提供有关数据流、对象序列和文件系统的系统输入/输出类
6>java.awt.*; 包含创建UI和绘图以及图像处理的类,用户图形界面GUI
7>java.swing.*; 同上。