- 浏览: 77408 次
- 性别:
- 来自: 深圳
文章分类
最新评论
/* static修饰符用于修饰成员变量和函数。 被static修饰的就不在堆内存中了。每个对象都能访问静态成员。 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外, 还可以直接被类名调用,类名.静态成员。 static特点: 1.随着类的加载而加载,随着类的消失而消失 2.优先于对象存在,被所有对象所共享 3.可以直接被类名所调用 实例变量和类变量的区别: 1.存储位置 类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。 2.生命周期 类变量生命周期最长,随着类的消失而消失 实例变量生命周期随着对象的消失而消失 静态使用注意事项: 1.静态方法只能访问静态成员 非静态方法既可以访问静态也可以访问非静态 2.静态方法中不能定义this,super关键字 因为静态优先于对象存在,所以静态方法中不可以出现this 3.主函数是静态的 */ class Person{ String name; static String country = "CN"; public void show{ System.out.println(name + ":" + country); } } class StaticDemo{ public static void main(String[] args){ Person p = new Person(); p.name = "zhangsan"; p.show(); System.out.println(Person.country); } } 特有内容随着对象存储,在堆内存当中。 方法区(共享区或者数据区):存放类中的方法、共享数据
什么时候使用静态?
要从两方面下手:
因为静态修饰的内容有成员变量和函数
什么时候定义静态变量呢?
当对象中的出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于堆内存中
什么时候定义静态函数?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。
静态的应用: 每一个程序中豆邮共性的功能,可以将这些功能进行抽取,独立封装。以便复用。 class ArrayTool{ public int getMax(int[] arr){ int max = 0; for(int x = 1; x<arr.length;x++){ if(arr[x]>arr[max]) max =x; } return arr[max]; } public int getMin(int[] arr){ int min = 0; for(int x = 1; x<arr.length;x++){ if(arr[x]>arr[min]) min =x; } return arr[min]; } public void selectSort(int[] arr){ for(int x=0;x<arr.length-1;x++){ for(int y=x+1;y<arr.length;y++){ if(arr[x]>arr[y]){ } } } } } class ArrayToolDemo{ public static void main(String[] args){ int[] arr = {1,2,3,4,5}; ArrayTool Tool = new ArrayTool(); int max = Tool(arr); } } 虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组操作发现了问题: 1.对象是用于封装数据的,可是ArrayTool并未封装特有数据 2.操作数组的每一个方法都没有用到ArrayTool对象中的特有数据 这是就可考虑,让程序更严谨,不需要对象 可以将ArrayTool中的方法都定义成静态的,直接通过类名调用即可。 所以程序应该在ArrayTool中的方法改成静态方法
将ArrayTool.class发给其他人,其他人只要将该文件所在路径设置到
classpath路径下就可以使用该工具类。
该类中的方法使用者不清楚,所以要创建该工具类的说明书。java的说明书通过文档的注释来完成。
javadoc -d myhelp。
如果当前目录中没有myhelp文件夹,则会自动建该文件夹。从index.html开始看帮助。
一个类中默认会有一个空参数的构造函数。这个默认的构造函数的权限和所属类权限一致。
/** 这是一个可以对数组进行操作的工具类,该类中提供了,获取最值方法 @author 张三 @version v1.1 */ class ArrayTool{ /** 获取一个整形数组中的最大值。 @param arr接收一个int类型的数组 @return会返回该数组的最大值 */ public int getMax(int[] arr){ int max = 0; for(int x = 1; x<arr.length;x++){ if(arr[x]>arr[max]) max =x; } return arr[max]; } public int getMin(int[] arr){ int min = 0; for(int x = 1; x<arr.length;x++){ if(arr[x]>arr[min]) min =x; } return arr[min]; } public void selectSort(int[] arr){ for(int x=0;x<arr.length-1;x++){ for(int y=x+1;y<arr.length;y++){ if(arr[x]>arr[y]){ } } } } }
发表评论
-
151多线程(优先级&yield方法)
2015-10-28 11:16 694/* 养成习惯:数据共享用静态 */ class Dem ... -
150_多线程(Join方法)
2015-10-27 18:31 610/* join: 当A线程执行到了B线程的join方法 ... -
114_面向对象(多异常处理)_黑马程序员_Java基础视频
2015-10-25 23:27 695/* 对多异常的处理 1.生命异常时,建议声明更为具体的异 ... -
113_面向对象(异常声明throws)_黑马程序员_Java基础视频
2015-10-25 23:26 481/* 异常:就是程序在运行时出现不正常情况 异常由来:问题 ... -
112_面向对象(异常try-catch)
2015-10-25 23:25 733/* 异常:就是程序在运行时出现不正常情况 异常由来:问题 ... -
148_多线程(停止线程)
2015-10-25 23:16 581/* stop方法已经过时。 如何停止线程? 只有一 ... -
147_多线程(线程间通信-生产者消费者JDK5.0升级版)
2015-10-21 23:33 751/*JDK1.5及以上提供了多线程升级解决方案。 将同步Sy ... -
146_多线程(线程间通信-生产者消费者)
2015-10-20 23:35 627一个生产者一个消费者 ... -
144_多线程(线程间通信-等待唤醒机制)
2015-10-20 18:35 721class Res{ String name; Str ... -
142_多线程-线程间通信
2015-10-20 16:18 703/* 线程间通讯: 其实就是多线程在操作同一个资源。 但 ... -
141多线程-死锁
2015-10-20 14:45 694/* 死锁: 同步中嵌套同步 */ class T ... -
140_多线程(多线程-单例设计模式-懒汉式)
2015-10-19 11:45 689/* 单例设计模式 饿汉式 class Single ... -
138_多线程(多线程-同步函数的锁是this)
2015-10-15 14:48 847/* 同步函数用的是哪一个锁呢? 函数需要被对象调用。那么 ... -
137_多线程(多线程-同步函数)
2015-10-13 23:25 599/* 需求:银行有一个金库。 有两个储户分别存300元 ... -
135_多线程(多线程的安全问题)
2015-10-13 18:07 609class TWindow implements Runnab ... -
多线程(创建线程-实现Runnable接口)
2015-10-10 00:19 554class TWindow implements Runnab ... -
133_多线程(售票的例子)
2015-10-09 23:48 645/* 需求:简单的买票程序 多个窗口卖票 */ c ... -
132_多线程(获取线程对象以及名称)
2015-10-09 23:30 1216/* 练习:创建两个线程,和主线程交替运行 线程都有自 ... -
多线程-继承Thread类
2015-10-09 00:26 1560/* 进程:是一个正在执行中的程序 每一个进程执行都有一个 ... -
包的应用
2015-10-08 23:28 1665package pack; class PackageD ...
相关推荐
静态方法通常用于工具类或不需要对象状态的方法。例如: ```java class MathUtils { static int add(int a, int b) { return a + b; } } ``` 3. **静态块**:静态初始化块用于在类加载时初始化静态变量。...
Java中的静态(static)关键字是面向对象编程中的一个重要概念,它允许我们定义类级别的变量和方法,而不是局限于实例级别的。本篇文章将详细讲解静态static的关键点,并结合Java的基础教学进行阐述。 1. 静态...
*/`格式的注释可以生成Javadoc,这是一种自动生成API文档的工具,帮助开发者理解和使用代码库。 以上就是面向对象编程的基本知识,深入理解和熟练应用这些概念是成为一名优秀的Java程序员的关键。通过实践和不断...
如面向对象的三大特征(封装、继承、多态)、对象的生命周期(垃圾回收时调用`finalize()`方法)、静态成员变量(被`static`修饰,属于类而不属于特定实例)、内部类、文档注释处理(Javadoc工具生成帮助文档)等。...
- C、Java文档生成工具:javadoc.exe用于生成API文档。 - D、Java打包工具:jar.exe用于打包Java应用为JAR文件。 2. Java语言类型: - Java是一种高级语言,它不是机器语言、汇编语言。 3. 可在Java虚拟机运行...
- **static**:静态修饰符,与类关联而非对象。 通过这些知识点的学习,你可以深入理解Java编程的基本概念和面向对象的原理,为编写和调试Java程序打下坚实的基础。在实践中,不断做题和总结将有助于巩固和提高你...
10. **文档**:包括JavaDoc,用于生成代码的自动文档,帮助其他开发者理解和使用项目。 总的来说,"Static-Void-2015-2016"项目展示了高中学生如何运用Java编程语言和技术解决机器人控制问题,同时也展现了他们在...
内部类可以分为成员内部类、局部内部类、静态内部类和匿名内部类。 #### 十四、Java文档注释 Java文档注释(Javadoc)是一种特殊的注释格式,使用`/** */`来标记。这些注释可以被工具提取出来生成API文档。 #### ...
- **static关键字**:掌握静态成员变量和静态方法的使用。 - **this关键字**:理解this关键字的作用,尤其是在指代当前对象时的应用。 - **包**:理解Java包的概念及其在组织类方面的作用。 - **import语句**:掌握...
4. **静态导入(Static Import)**: 允许直接使用类中的静态成员,避免了类名前的引用。 5. **变量作用域的限制(Final Local Variables)**: 可以在try-with-resources语句中声明并初始化final局部变量。 6. **...
5. **Javadoc**:生成关于Java源代码的API文档的工具。 6. **classpath**:指定查找类文件的路径,是Java运行时环境寻找类的重要配置。 7. **version**:用于查询Java版本信息。 8. **public**:访问修饰符,表示...
7. **静态导入(Static Import)**:允许直接引用类中的静态成员,无需指定类名。 **五、使用JDK中文帮助文档** 打开JAVA5.0API_CN.CHM文件后,你可以通过搜索功能快速查找所需内容,或者按照类库结构逐级浏览。...
*/`,可以被`javadoc`工具解析生成文档。 示例: ```java /** * 这是我的Hello World程序。 * @author 小强 */ class Demo { /** * 这是主函数,是程序的入口。 * 它的出现可以保证程序的独立运行。 */ ...
Java 语言与面向对象程序设计的选择题涵盖了 Java 开发工具(JDK)、语言特性、Java 虚拟机(JVM)、程序语法、变量、运算符、控制结构、类与对象、构造方法以及设计模式等多个核心知识点。 1. JDK 工具包括 Java ...
- **1.5 有效利用Java的文档帮助**: - **javadoc命令**:自动生成HTML格式的API文档。 - **JavaDoc注释**:按照特定格式书写,方便生成文档。 - **1.6 JVM(虚拟机)的运行过程**: - **加载**:读取.class文件...
根据提供的文件信息,我们可以归纳出该教程主要涵盖了Java的基础知识及其面向对象的编程特性,并对这些内容进行了详细的讲解。下面将对这些知识点进行详细的解析: ### 第1章:Java开发前奏 #### 1.1 Java虚拟机及...
- 静态变量(`static`)可以在类级别进行初始化,如`static int i=100;`。 - 变量名应遵循命名规则,如`float $_*5= 3.4F;`是非法的,因为它包含了非法字符`*`。 通过这些知识点,考生应该能掌握Java编程的基础,...
#### 工具类 - `Collections`:提供了对集合操作的各种静态方法。 ### 六、输入输出流 - **File类**:用于文件和目录路径名的创建、查找和修改。 - **输入输出流**: - `InputStream`/`OutputStream`:字节流的...