Java基础
来源:互联网 发布:unity3d 画虚线 编辑:程序博客网 时间:2024/06/02 01:24
基本命令
- 编译(Hello.java):javac Hello.java
- 运行(Hello.class):java Hello [arg arg arg …]
- 生成doc文档(-d doc 表示生成的文档放在doc目录下,执行该语句必须是public类):javadoc -d doc Hello.java
声明路径
- pakage com.ghc; 该语句可加到类文件开头,声明该类路径。
- 编译后,需把相应的.class文件放到当前目录下的com/ghc/目录下。
- 或者编译命令这样执行javac -d . ClassName.java,之后就自动生成了com/ghc/目录并.class文件。
- 执行java com.ghc.ClassName运行。
- 紧跟在pakage语句后,声明用到的类的路径
import java.utils.*;
import com.ghc.Hello;
生成jar包
生成普通jar包
jar cvf tools.jar * 把当前目录下所有的文件打成jar包
jar cvf zoo.jar Animal.class Dog.class 把这两个class文件打成jar包制作可执行jar包(方法一)
解压jar包,编辑META-INF/MANIFEST.MF文件,给jar包指定程序入口main函数,内容为:Manifest-Version: 1.0Created-By: 1.5.0_06 (Sun Microsystems Inc.)Main-Class: MutiThread (回车)
(注意回车与空格,这个文件的内容排版必须标准)
再用winzip把这些文件压缩成jar格式包,或者压成zip包,再改后缀名为jar也可制作可执行jar包(方法二)
控制台定位到将要被打包的.class文件根目录,新建一个文件manifest.mf,内容为Manifest-Version: 1.0Created-By: 1.5.0_06 (Sun Microsystems Inc.)Main-Class: MainEntry(回车)
(注意回车与空格,这个文件的内容排版必须标准)
MainEntry为包含main入口方法的那个类名
再执行 jar cvfm jarname.jar manifest.mf *运行jar包
java -jar jarname.jar制作jar启动入口文件
在jar包同级目录中新建文件run.bat,内容为
java -jar jarname.jar
pause
修饰符
public 可以被任意类访问
protected 可以被本类内部、同包的类、所有子类访问
defalt 可以被本类内部、同包的类访问
private 可以被本类内部访问
继承复写方法,访问权限只能放大,否则编译报错
构造方法
- 如果该类中没有构造方法,编译器会默认生成无参构造方法。
- 如果该类中定义了有参构造方法,没有定义无参构造方法,那么就不会生成默认的无参构造方法了。
- 如果子类构造方法没有调用父类构造方法,编译器会默认调用父类无参构造方法。
- 如果子类构造方法没有调用父类构造方法,并且父类只定义了有参构造方法,报错。
面向对象的三大特征:封装、继承、多态
- 封装性:类的属性私有、方法对外
- 继承性:继承已有类,直接利用它的属性和方法
- 多态性:一个激励、多种响应,通过方法重载,覆盖,属性覆盖实现
- 方法名子、参数列表和返回参数都和父类型一样,这样的子类方法就覆盖了父类方法
- 如果方法名、参数列表都和父类方法一样,但是返回值类型不同,这样会报错,是不允许的,系统无法识别该执行哪个方法了
- 只能继承一个类,可以实现多个接口
java语言是强类型、解释型语言
对类型匹配要求严格、运行时需要解释器、JVM。对应的类型为弱类型、编译型语言。
static
- 被static修饰的变量叫类变量,有唯一的一块存储空间;
- 不被static修饰叫实例变量,一个实例有一块空间。
- 静态方法可以被类名直接调用
- 静态方法只能访问静态成员
- 非静态方法也可以访问静态成员
- 静态方法只能被静态方法覆盖,并且没有多态现象
- 静态类不能实例化(也不允许这样声明一个类,也就是说静态类就不存在)
- 静态内部类可以实例化但是只能访问外部类的静态成员
- 类中所有方法外的代码块称为,初始化代码块
- 静态代码块在类加载的时候进行
- 类创建时代码执行顺序
- 静态属性赋默认值;
- 静态代码块执行;
- 构造方法中的super()执行;
- 实例属性赋默认值;
- 非静态代码块执行;
- 构造方法中其他代码执行。
final
- 被finial修饰的变量是常量,即一旦赋值不能改变的量
- 如果是引用,可以通过该引用改变对象属性,不会赋予默认值
- 一旦对象创建完成就不能对final对象赋值了,赋值时机为初始化属性时或者在构造函数中。
- 被finial修饰的类不能派生子类,即不能被继承。
abstract
- 被abstract修饰的类是抽象类,可以声明引用不能创建对象
- 子类是抽象类,或者不是抽象类那么抽象方法必须被复写
- 有抽象方法的类必须是抽象类
接口
- 所有的方法都是公开抽象方法
- 所有的变量都是公开静态常量
- 接口最重要的作用就是解耦和(台灯发光的例子)
内部类
- 方法操作的都是接口类型,而没有与实现类接触,认为方法与实现类是弱耦合关系
- 方法内部定义实现类,返回接口类型,称为强制弱耦合
成员内部类
- 成员内部类可以访问外部类非静态成员
- 成员内部类不能定义静态方法
- 在类Test内部创建OuterClass类的成员内部类InnerClass的对象
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
静态内部类
- 静态内部类可以访问外部类的静态成员
- 静态内部类可以定义静态方法
- 在类Test内部创建OuterClass类的静态内部类InnerClass的对象
OuterClass.InnerClass inner = new OuterClass.InnerClass();
- 局部内部类
- 局部内部类访问范围就在相应的局部范围
- 局部内部类访问外部类的局部变量,该局部变量必须是final的
- 匿名内部类
- 该内部类继承自某个类或实现某个接口
- 该内部类在整个方法中只创建了一个对象
- 匿名内部类是局部内部类
0 0
- Java基础01:基础
- Java基础:基础加强
- Java基础-基础
- java基础的基础
- JAVA基础---基础常识
- Java基础:基础加强
- [Java 基础]基础语法
- Java基础
- java基础
- java 基础
- java基础
- Java基础
- Java基础
- Java基础
- JAVA基础
- JAVA基础
- JAVA基础
- java基础
- LeetCode 173. Binary Search Tree Iterator
- OLPreViewController 在ios10上的不显示的解决办法
- android 解决输入法键盘遮盖布局问题
- 【Day37】php导出word文档与excel电子表格的简单代码
- 《Apache Kylin cube优化指南》
- Java基础
- js严格模式实例
- 删除xcode项目svn
- 毕业设计项目开发日志1
- 欢迎使用CSDN-markdown编辑器
- Redis RedisCluster Spring整合
- 委托(3.匿名方法、lambda、闭包、foreach)
- Angular-cli
- makefile 供学习参考用