- 浏览: 41396 次
- 性别:
- 来自: 杭州
最近访客 更多访客>>
文章分类
最新评论
-
Demin7926:
正好想要这样的数据,而且最好还是.mdf的,但还是不错了,多谢 ...
中国地区数据库Access c#生成sql数据文件 -
zhuzidian:
1.这个classpath是没有必要设置的,那几个jar默认会 ...
Java开发环境的搭建 -
蜡笔小新:
收下
请问第2条中,J2EE开发环境下载什么样的sdk呢?
Java开发环境的搭建
长方形
package book.oo; public class PassParamter { public PassParamter() { } public void methodA(ComplexNumber comNum) { // comNum这个引用指向了一个新new出来的对象。 comNum = new ComplexNumber(1, 2); } public void methodB(ComplexNumber comNum) { // comNum这个引用指向的还是同一个对象,但是,这里修改该对象的值。 comNum.setRealPart(1); comNum.setRealPart(2); } public void methodC(int num) { // 将num的值加1 num++; } public static void main(String[] args) { PassParamter test = new PassParamter(); ComplexNumber comNum = new ComplexNumber(5, 5); System.out.println("调用methodA方法之前,comNum: " + comNum.toString()); test.methodA(comNum); System.out.println("调用methodA方法之后,comNum: " + comNum.toString()); System.out.println("调用methodB方法之前,comNum: " + comNum.toString()); test.methodB(comNum); System.out.println("调用methodB方法之后,comNum: " + comNum.toString()); int num = 0; System.out.println("调用methodC方法之前,num: " + num); test.methodC(num); System.out.println("调用methodC方法之后,num: " + num); // 调用methodA方法之前,comNum: 5.0 + 5.0i // 调用methodA方法之后,comNum: 5.0 + 5.0i // 调用methodB方法之前,comNum: 5.0 + 5.0i // 调用methodB方法之后,comNum: 2.0 + 5.0i // 调用methodC方法之前,num: 0 // 调用methodC方法之后,num: 0 /** * Java的参数传递策略: * 0,所谓传值的意思是:在调用方法时,将参数的值复制一份,方法里面用复件,方法外面用原件,复件改变了,不影响原件;原件改变了,不影响复件。 * 1,对于基本数据类型,比如int,long等类型,采用传值的策略。将参数的值复制一份后传给方法,方法可以改变参数值的复件,但不会改变参数值的原件。 * 2,对于对象类型,也采用的传值策略,不过,是将参数的引用复制(2个引用指向同一个对象)一份传给方法,方法可以改变参数引用的复件,但不会改变参数引用的原件。 * * 解释三个输出: * 1,调用methodA方法时,首先将comNum对象的引用复制一份,将引用的复件传递给methodA方法,main方法保持引用的原件,此时,引用原件和引用复件都指向comNum对象。 * 执行comNum = new ComplexNumber(1,2);语句后,将引用复件指向了另外一个新的对象,此时,引用复件和引用原件指向的是不同的对象。回到main方法时,操作的仍然是引用原件指向的comNum对象。 * 2,调用methodB方法时,首先将comNum对象的引用复制一份,将引用的复件传递给methodB方法,main方法保持引用的原件,此时,有引用原件和引用复件都指向comNum对象。 * 执行comNum.setRealPart(1);comNum.setRealPart(2);语句后,修改了引用复件所指对象的内容,而此时,引用复件和引用原件指向的是同一个对象,因此,引用原件指向的对象的内容也改变了。回到main方法时,comNum对象也改变了。 * 3,调用methodC方法时,首先将num的值复制一份,将值的复件传递给methodC方法,main方法保持值的原件。 执行num * ++;语句后,复件的值会加1。回到main方法时,操作的仍然是原件,值保持不变。 */ } }
三角形
package book.oo.shape; /** * 三角形 */ public class Triangle extends MyShape{ //边a的长度 private double sideA; //边b的长度 private double sideB; //边c的长度 private double sideC; //边长错误 public static final String SIDEERR = "三角形的边长不能够小于0!"; //不能构成三角形错误 public static final String SHAPEERR = "三角形的二边之和必须大于第三边!"; /** *默认构造函数 */ public Triangle(){ init(); } /** * 用三条边构造一个三角形 * @param a 边a的边长 * @param b 边b的边长 * @param c 边c的边长 */ public Triangle(double a, double b, double c){ //如果给定的三条边能够组成三角形,便用给定的边长构成三角形 if (isTrianglelegal(a, b, c)){ this.sideA = a; this.sideB = b; this.sideC = c; } else { //否则,用默认值构造三角形 init(); } } /** * 缺省的三角形 */ private void init(){ this.sideA = 3; this.sideB = 4; this.sideC = 5; } /** * 判断三条边是否能够组成一个三角形 * @param a 边a的边长 * @param b 边b的边长 * @param c 边c的边长 * @return 布尔类型,如果能够组成三角形,便返回true,否则返回false */ private boolean isTrianglelegal(double a, double b, double c){ //三条边的长度必须大于0 if ((a <= 0) || (a <= 0) || (a <= 0)){ System.err.println(SIDEERR); return false; } else if ((a + b < c) || (a + c < b) || (b + c < a)){ //两边之和必须大于第三边 System.err.println(SHAPEERR); return false; } return true; } public double getGirth() { return this.sideA + this.sideB + this.sideC; } public double getArea() { //根据海伦公式计算三角形的面积 double s = (this.sideA + this.sideB + this.sideC) / 2; //利用Math.sqrt()方法进行开方运算 return Math.sqrt(s * (s - this.sideA) * (s - this.sideB) * (s - this.sideC)); } public String toString() { return "三角形的名字是:" + this.name + ", 它的三条边的边长分别是:" + this.sideA + ", " + this.sideB + ", " + this.sideC; } public double getSideA() { return sideA; } public void setSideA(double sideA) { //在设置边长的时候,依然要检测采用新的边长后,是否能够组成三角形。 if (this.isTrianglelegal(sideA, this.sideB, this.sideC)){ this.sideA = sideA; } } public double getSideB() { return sideB; } public void setSideB(double sideB) { if (this.isTrianglelegal(this.sideA, sideB, this.sideC)){ this.sideB = sideB; } } public double getSideC() { return sideC; } public void setSideC(double sideC) { if (this.isTrianglelegal(this.sideA, this.sideB, sideC)){ this.sideC = sideC; } } public static void main(String[] args) { Triangle test = new Triangle(); test.setName("myTriangle"); System.out.println(test.toString()); System.out.println("三角形的周长是:" + test.getGirth()); System.out.println("三角形的面积是:" + test.getArea()); } }
自定义图形
package book.oo.shape; /** * 自定义图形的基类 */ public abstract class MyShape { /**图形的名字*/ protected String name; //protected访问控制符表示只有本类和子类能够访问该属性。 /** * 抽象方法,获取形状的周长 */ public abstract double getGirth(); /** * 抽象方法,获取形状的面积 */ public abstract double getArea(); /** * 抽象方法,输出形状 */ public abstract String toString(); /** * 获取图形的名字 * @return 返回图形的名字 */ public String getName(){ return this.name; } /** * 为图形设置名字 * @param name 要设置的图形的名字 */ public void setName(String name){ this.name = name; } }
发表评论
-
JDK_实例(求指定范围内的质数)
2009-11-20 14:15 845package book.arrayset; impor ... -
JDK_实例(使用Arrays)
2009-10-29 13:28 697package book.arrayset; impor ... -
JDK_实例(处理大数字)
2009-10-29 13:21 1036package book.number; import ... -
JDK_实例(生成随机数)
2009-10-29 13:20 1936package book.number; import ... -
JDK_实例(转换数字的进制)
2009-10-29 13:16 985package book.number; /** * ... -
JDK_实例(数字的舍入)
2009-10-29 13:14 917package book.number; import ... -
JDK_实例(格式化数字)
2009-10-29 13:05 579package book.number; import ... -
JDK_实例(数字和数字封装类)
2009-10-29 13:02 713package book.number; /** * ... -
JDK_实例(Adapter 适配器模式)
2009-10-29 12:43 1493接口 package book.oo.sort; / ... -
JDK_实例(Factory工厂模式)
2009-10-29 12:39 839接口 package book.oo.factory; ... -
JDK_实例(Singleton单列模式)
2009-10-29 12:35 1025A package book.oo.singleton; ... -
JDK_实例(排序类)
2009-10-29 12:29 1048排序接口 package book.oo.sort; ... -
JDK_实例(方法与变量在继承时的覆盖和隐藏)
2009-10-29 12:24 783父类 package book.oo.cov ... -
JDK_实例(类的加载顺序)
2009-10-29 12:20 721父类 package book.oo.initorder; ... -
JDK_实例(Java 参数传递)
2009-10-29 12:05 905package book.oo; public clas ... -
JDK_实例(复数类)
2009-10-29 11:52 848package book.oo; public clas ... -
JDK_实例(命令行程序)
2009-10-29 11:29 668package book.basic; public c ... -
JDK_实例(计算阶乘)
2009-10-29 11:28 700package book.basic; public c ... -
JDK_实例(控制程序流程)
2009-10-29 11:27 549package book.basic; public c ... -
JDK_实例(java 运算符)
2009-10-29 11:24 793package book.basic; public c ...
相关推荐
4 自定义形状类 2. 5 类的加载顺序 2. 6 方法和变量在继承时的覆盖与隐藏 2. 7 排序类 2. 8 Singleton单例模式 2. 9 Factory工厂模式 2. 10 Adapter适配器模式 第3章 数字 3. 1 ...
实例185 自定义泛型化数组类 235 实例186 泛型方法与数据查询 236 实例187 泛型化方法与最小值 238 实例188 泛型化接口与最大值 239 实例189 使用通配符增强泛型 240 实例190 泛型化的折半查找法 241 第9章 编程常用...
需要注意的是,透明窗口和自定义形状的窗口在不同的操作系统和Java版本上可能有不同的表现。在某些平台上,窗口的形状可能受到限制,而透明度则可能受到硬件加速的限制。因此,在实际应用中,需要对这些情况进行适当...
1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard Edition 1.5.0 3 1.3.2 安装开发文档及最终完成 5 1.3.3 Java开发工具 6 1.4 Java程序开发过程 7 1.5 运行第一个Java程序 7 1.6 巩固...
示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 ...
1. **环境准备**:首先,你需要安装Android Studio,并确保你的开发环境已配置好Java Development Kit (JDK) 和Android SDK。Android Studio的插件管理器会自动安装必要的构建工具。 2. **添加依赖**:在项目的`...
开发者可以通过组合这些基本形状,或者自定义更复杂的几何形状,来构建所需的3D模型。 3. **Transformations**:为了控制3D对象的位置、旋转和缩放,Java 3D提供了变换节点。例如,`TransformGroup` 可以用来应用平...
4. 在主类中创建JFrame实例,并添加自定义的时钟面板,设置无边框窗口(可以通过setUndecorated(true)实现)。 总的来说,这个"JAVA经典时钟程序"展示了Java GUI编程的多个方面,包括自定义组件绘图、线程管理和...
`abstract`修饰符用于声明抽象类和抽象方法,抽象类不能被实例化,只能被继承。 #### 6.8 接口 接口是一种特殊的抽象类,只包含常量和抽象方法,用于定义一组行为规范。 ### 7. 面向对象的分析与设计 #### 7.1 ...
- **自定义异常类**:可以通过扩展 `Exception` 类来自定义异常类。 #### GUI - **概念**:图形用户界面。 - **容器**:用于存放其他组件的组件,如窗口、面板等。 - **布局管理**:用于控制组件在容器中的排列...
3. **几何形状**:学习如何创建基本的几何形状,如Box、Sphere和Cylinder,并了解如何自定义复杂的形状。 4. **变换**:应用旋转、平移和缩放变换到3D对象上,使场景中的物体能够动态移动和改变形状。 5. **光照与...
1. 学习如何使用Graphics类进行基本的图形绘制,如线条、形状和文本。 2. 理解Canvas和Panel组件,以及它们在图形绘制中的作用。 3. 掌握事件监听和处理,实现用户与图形的交互。 实验四:事件处理和图形化用户界面...
在JavaFX中,可以创建自定义的形状和图像,这对于游戏开发中的角色和环境设计非常关键。 对于马里奥游戏的实现,开发者可能使用了JavaFX中的Scene类来构建游戏场景,ImageView或Shape类来绘制马里奥、敌人、砖块等...
对于更精确的碰撞检测,可能需要实现自定义的几何形状和碰撞算法。 在游戏的状态管理方面,可以使用状态机模式来设计。游戏有多个状态,如开始、游戏进行、暂停、结束等,每个状态对应一个类,状态之间的切换通过...
- **图形绘制**:使用Graphics类绘制线条、形状等。 - **颜色处理**:通过Color类设置颜色。 - **2D图形**:介绍Graphics2D类的高级图形处理功能。 #### 第6章:Java用户界面技术 - **用户界面组件**:学习Swing库...
在这个小型画板项目中,开发人员可能主要使用了Swing库,因为它是Java标准版(JDK)的一部分,无需额外安装。Swing包含了一系列的组件类,如JFrame、JPanel、JButton、JColorChooser等,可以用来构建画板的基本结构...