java的问题
① java问题
第一个问题:
1.首先,我们从main函数入手开始看,
GridLayout layout=new GridLayout();
实例化GridLayout这个类,我们需要观察该类的构造函数和继承状态
2.OK,没有带参数的构造函数,那么看到class GridLayout implements LayoutManager意思是实现了LayoutManager这个接口
interface LayoutManager 这个接口定义了show() 方法,并在GridLayout 实现(重写)了该方法。
GridLayout layout=new GridLayout();执行完毕。
3.Panel pan=new Panel(layout);
实例化Panel 这个类,我们需要观察该类的构造函数和继承状态
4,OK,我们看到Panel 类就两个构造函数,一个是无参数的,还有一个是Panel(LayoutManager layout)构造函数,LayoutManager是什么呢?为什么能传入GridLayout 类的变量作为参数而不是GridLayout 类型的参数呢?
OK,我们看到LayoutManager是一个接口,接口被GridLayout 实现,刚才也说过class GridLayout implements LayoutManager意思是实现了LayoutManager这个接口
也就是说,我们的GridLayout 跟 接口LayoutManager 显然存在着继承关系。
OK。我们仔细观察不难发现之间存在的关系。
<1>,有继承的存在。 GridLayout implements LayoutManager 。
<2>,有重写,刚说过GridLayout 实现(重写)了show方法。
<3>,在你的疑问里,LayoutManager layout,既然能传入,证明作者的设计LayoutManager 跟GridLayout 存在着继承的关系,并在这里,GridLayout 的引用变量layout作为实参传入了该构造函数,那么LayoutManager layout这个形参就指向了GridLayout 类的实例。
那么为什么父类引用能指向子类的实例?有什么好处?
这种设计方式是java语言的核心基础,称之为多态!不知道多态是什么?赶紧去面壁,然后翻书。
这么做的好处?简单来说就是,我们加入新的子类到程序中时,(就像你这个程序里的FlowLayout的加入) ,不必重写或修改处理这个类型的程序(这里就是不需要增加令一个参数类型的构造函数)给程序员提供了非常非常大的便利(不需要修改构造函数难道不便利么?)。
关于多态,你需要仔细阅读java书籍才能弄懂更多的细节。
继续说程序,layout.show()在构造函数中被调用,System.out.println("这是卡片布局!"),输出这是卡片布局。
Panel pan=new Panel(layout);执行结束了。然后main方法结束。程序结束。
第一个问题结束!
第二个问题:
void add(Object obj){ //object obj什么意思
System.out.println("添加组件啦");
}
这里的Panel 类中,有一个add方法,这个方法在程序中没有被调用,所以该程序再执行过程中没它什么事。我们来分析一下这个add方法。
Object obj在该方法中作为形参准备接收调用该方法时传来的实参,OK。
Object 是什么?Object 是java所有类的最终的基类。你定义的所有类,都默认extends Object。也就是说,在这里,不管传入什么东西,肯定是父类引用指向子类实例。
这跟上面一样,还是多态的使用。
关于object类和多态,还是需要看书继续深化理解。所以,骚年,任重道远,这只是开始的开始的开始。
但是,基础至关重要。
② java的问题
代码对象的创建流程说明如下:
String str1 = "hello" + " java";可以看成 String str1 ="hello java"; 在字符串常量池查找是否已经存在“hello java”的字符串常量对象,未找到则创建字符串"hello java",str1指向该对象并且将该对象放到字符串常量池。
String str2 = "hello java"; 该创建过程为:去字符串常量池查找是否有“hello java”的字符串对象,因为刚才已经创建了一个在常量池的对象,直接返回该对象,所以str1和str2是指向同一个对象的字符串。
String str3 ="hello";在常量池查找是否包含该“hello”的字符串对象,不存在创建一个新的字符串对象给str3,放入常量池。String str4 = "java" ,在常量池查找是否包含该“java”的字符串对象,不存在创建一个新的字符串对象给str4,放入常量池。这个时候str3和str4不是同一个对象。
String str3 = str3 +str4; 因为String是final不可变的对象类型,这个操作实际上是创建了一个新的StringBuilder然后toString方法创建了一个新的字符串对象。所以str3依旧不等于str2和str1。
③ java的问题
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean compareTowPeopleAge(Person p1, Person p2){
if (p1 == null || p2 == null){
throw new RuntimeException("参数传入为null");
}
return p1.getAge() == p2.getAge();
}
}
如果解决了你的问题,请采纳,如果有疑问,请追问!
④ JAVA问题
就算是温故知新吧。 我试着把你这两个文件放在c:\jdk\test文件夹里, 然后先 javac Aaa.java 编译成功. 然后再 javac Hello.java 编译出错: Hello.java:1: 错误: 程序包a不存在 import a.Aaa; ^ Hello.java:4: 错误: 无法访问Aaa Aaa a=new Aaa(); ^ 错误的类文件: .\Aaa.class 类文件包含错误的类: a.Aaa 请删除该文件或确保该文件位于正确的类路径子目录中。 2 个错误 上面的提示,大概意思是说 Aaa.class的位置放错了。 我直接在dos下输入: javac 查看语法 -d <目录> 指定放置生成的类文件的位置 然后按上面这个提示,重新编译一个 Aaa.java文件 javac Aaa.java -d . 这个时候我发现新生成了一个a文件夹,里面存放的是 Aaa.class 然后我再编译 javac Hello.java 编译成功。 C:\jdk\test>java Hello Hello! java中的包其实你完全可以理解为“文件夹”。 一个包里有很多的类文件,一个“文件夹”里存放着很多的类文件。
⑤ java的问题
JAVA(TM)6 UPDATE 15是JRE, java程序运行环境。 网页游戏大多是Flash的, 是有少部分B/S结构管理软件才会用大JRE, 比如说公司里的OA, 报销管理, 进存销管理软件等, 有一部分就是基于Java Applet开发的, 需要JRE的支持。
后面的UPDATE 15是java1.6.0大版本的15小版本号
⑥ java问题
LayoutManager是接口,开始就定义了interfaceLayoutManager;Object是对象基本类型,可以理解为所有对象的父类。Objectobj就是定义一个Object类的obj执行顺序,接口的执行顺序有很多,只要你调用了就会执行,调用的顺序就是执行的顺序,如果没调用,可能一辈子都不会执行。
⑦ 关于JAVA的一些问题
一、Java异常的基础知识
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。
有些异常需要做处理,有些则不需要捕获处理,后面会详细讲到。
天有不测风云,人有旦夕祸福,Java的程序代码也如此。在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免、不可预测的情况则在考虑异常发生时如何处理。
Java中的异常用对象来表示。Java对异常的处理是按异常分类处理的,不同异常有不同的分类,每种异常都对应一个类型(class),每个异常都对应一个异常(类的)对象。
异常类从哪里来?有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
异常的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的异常。二是程序员自己抛出的异常,这个异常可以是程序员自己定义的,也可以是Java语言中定义的,用throw 关键字抛出异常,这种异常常用来向调用者汇报异常的一些信息。
异常是针对方法来说的,抛出、声明抛出、捕获和处理异常都是在方法中进行的。
Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下:
try{
程序代码
}catch(异常类型1 异常的变量名1){
程序代码
}catch(异常类型2 异常的变量名2){
程序代码
}finally{
程序代码
}
catch语句可以有多个,用来匹配多个异常,匹配上多个中一个后,执行catch语句块时候仅仅执行匹配上的异常。catch的类型是Java语言中定义的或者程序员自己定义的,表示代码抛出异常的类型,异常的变量名表示抛出异常的对象的引用,如果catch捕获并匹配上了该异常,那么就可以直接用这个异常变量名,此时该异常变量名指向所匹配的异常,并且在catch代码块中可以直接引用。这一点非常非常的特殊和重要!
Java异常处理的目的是提高程序的健壮性,你可以在catch和finally代码块中给程序一个修正机会,使得程序不因异常而终止或者流程发生以外的改变。同时,通过获取Java异常信息,也为程序的开发维护提供了方便,一般通过异常信息就很快就能找到出现异常的问题(代码)所在。
Java异常处理是Java语言的一大特色,也是个难点,掌握异常处理可以让写的代码更健壮和易于维护。
⑧ Java问题
class MyApplication {
public void click(){
System.out.println("应用打开了");
}
}
class Word extends MyApplication{
public void click(){
System.out.println("应用打开了一个word文档");
}
}
class Text extends MyApplication{
public void click(){
System.out.println("应用打开了一个txt文档");
}
}
class Picture extends MyApplication{
public void click(){
System.out.println("应用打开了一张图片");
}
public void beauty(){
System.out.println("我可以美化图片");
}
}
class Test{
public static void method(MyApplication ma){
ma.click();
if(ma instanceof Picture){
((Picture)ma).beauty();
}
}
public static void main(String[] args) {
MyApplication ma = new Word();
method(ma);
ma = new Text();
method(ma);
ma = new Picture();
method(ma);
}
}
⑨ 关于Java的问题
圆形类:
package Demo;
public class Circle {
public double getCircleCircumference(double r){
return 2*r*Math.PI;
}
public double getCircleSquare(double r){
return Math.PI*r*r;
}
}
矩形类:
package Demo;
public class Rectangle {
public double getRectangleCircumference(double length,double width){
return 2*(length+width);
}
public double getRectangleSquare(double length,double width){
return length*width;
}
}
三角形类:
package Demo;
public class Triangle {
public double getTriangleCircumference(double a,double b,double c){
return a+b+c;
}
public double getTriangleSquare(double a,double b,double c){
double p = (a+b+c)/2;
double q = p*(p-a)*(p-b)*(p-c);
return Math.sqrt(q);
}
}
测试:
package Demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Circle circle = new Circle();
Rectangle rectangle = new Rectangle();
Triangle triangle = new Triangle();
double r;
double length;
double width;
double a;
double b;
double c;
System.out.println("请输入圆形半径:");
Scanner sc = new Scanner(System.in);
r = sc.nextDouble();
double circleCircumference = circle.getCircleCircumference(r);
double circleSquare = circle.getCircleSquare(r);
System.out.println("圆形周长是"+String.format("%.2f",circleCircumference)+",面积是"+String.format("%.2f",circleSquare)+"
");
System.out.println("请输入长方形长:");
length = sc.nextDouble();
System.out.println("请输入长方形宽:");
width = sc.nextDouble();
double rectangleCircumference = rectangle.getRectangleCircumference(length, width);
double rectangleSquare = rectangle.getRectangleSquare(length, width);
System.out.println("矩形周长是"+String.format("%.2f",rectangleCircumference)+",面积是"+String.format("%.2f",rectangleSquare)+"
");
System.out.println("请输入三角形第一条边长:");
a =sc.nextDouble();
System.out.println("请输入三角形第二条边长:");
b = sc.nextDouble();
System.out.println("请输入三角形第三条边长:");
c = sc.nextDouble();
double triangleCircumference = triangle.getTriangleCircumference(a, b, c);
double triangleSquare = triangle.getTriangleSquare(a, b, c);
System.out.println("三角形周长是"+String.format("%.2f",triangleCircumference)+",面积是"+String.format("%.2f",triangleSquare)+"
");
}
}
测试结果:
⑩ 关于Java的问题
简单来说
action 就是我们一般所指的后台,接收前端请求的参数,用这些参数去调用service层的方法进行一些逻辑处理,最终返回一个结果响应给前端
service 一般用来控制事物,通过action传进来的参数去调用层的方法,进行大部分的逻辑处理,保证数据的一致性。以前的jdbc方式,需要自己去控制事物提交和关闭的动作,现在的框架都会对jdbc进行封装,就不需要你显式的去操作这些了,你只需要写好你的这些接口。举个例子,你想保存a表的数据的时候,同时也想对b表的数据进行变更操作,那么你可以把保存a表数据的方法和变更b表数据的方法放到一个service方法里,如果有一个失败,那么进行回滚,不会出现说a的数据进去了,b的变更却没有成功这种情况发生,要么都失败,要么都成功,当然这只是一个小例子。
层 我们就是让它和数据库进行交互,简单点说就是写一个sql语句,然后打开数据库连接,拿到这条语句执行的结果。有时候为了方便,也在里面写一些简单的逻辑处理,严格来说,逻辑处理一般都在service体现。
entity 你都说他是模型了,你简单的理解他就是对应数据库中的表好了,里面的字段也是参照数据库的表字段来的。数据库里面有一个这样的表,你可以写sql语句去增删查改这些操作,那么在代码里面也需要有一个这样的数据载体去进行数据逻辑处理
大概就这样了,纯手敲啊,忘采纳,大半夜不容易。谢谢。