- 现在有两个方法:double add(int a, double b); double add(int a, int b); 假如你是编译器,你知道具体调用的是哪个方法么?显然很容易知道 而对于上述调用,假设有两个参数相同返回值不同的 add方法,即: double add(int a, double b); int add(int a, double b); 你知道应该选哪一个么? 反正我确定不了,编译器也确定不了!确定不了就没法编译、连接! 因此,之所以返回值不同不能作为重载条件,根源在于调方法是可以不用返回值的,就像上面那样。
- 使用数组初始化语法时,必须将声明、创建和初始化数组都放在一条语句中。将它们分开会产生语法错误。因此下面的语句是错误的:
Double[] myList;
myList ={1.9,2.9,3.4,3.5};
- 随意打乱的方法思想,采用置换的方法,遍历法依次对每个i产生一个随机的j,然后置换A[i],A[j]。
- 在数组这种数据结构中,如果要进行全局的操作,思想一般是先数型结合。
- 增强的for循环 for(double u: myList){
System.out.println(u);
}
- 将条件隐含在给定场景下是一种很酷的思想。如将牌的花色和牌的大小隐含在对应数组的数字中,然后通过一个计算,得到隐含条件,然后将这个隐含信息映射成我们直观的信息。
- 数组复制的三种方法
- 使用循环语句诸葛地赋值数组的元素
- 使用System类中的静态方法arraycopy
- 使用clone方法复制数组
- 匿名数组: new int[]{3,1,2,6,4,2};该数组没有显式的引用变量。
- 可变长参数。
- 方法中的参数声明如下: typeName…parameterName(类型名…参数名)
- 只能给方法中制定一个可变长参数,同时该参数必须是最后一个参数。
- Java将可变长参数当成数组对待。可以将一个数组或可变的参数个数传递给可变长参数。
- 对算法的理解. 算法也就是数学思想加上解题的具体步骤,是思想指导下的步骤方法的应用.对一个算法的理解或者对一个问题给出具体的算法,应该先从问题的主要矛盾下手,然后通过数学思想去化解这类问题,最后在思想的指导下,结合相应的方法,给出具体的步骤.
- 选择排序算法->本质是转化化归的思想.也就是将排序的问题转化为多次的选择问题.转化,迭代思想的应用.
- 插入排序算法 实际上是复杂问题简单化的一种思想,就是将复杂的排序问题,转化问简单的插入问题,也就是默认已经有了排好的区间了,将数据插入排好的区间里,仍然是一个有序的区间.是复杂问题简单化,迭代思想的应用.
- 实例变量和实例方法只能在实例方法中使用,不能再静态方法中使用,因为静态变量和静态方法比实例早加载到内存中。
- 当传递基本数据类型参数时,传递的是实参的值。传递引用类型的参数时,传递的是对象的引用。
- Java虚拟机为了提高效率并节约内存,对具有相同字符串序列的字符串直接量使用同一个实例
屏幕剪辑的捕获时间: 2016/9/13 1:49
- String == 是用于判断两个引用值是否相同 而equals 用于判断 内容是否相同
- StringBuilder和 StringBuffer 类很相似。如果是多任务并发访问,就使用StringBuffer;如果是单任务访问,使用StringBuilder;
- StringBuilder 的默认构造方法构建一个容量为16的空的字符串生成器。
- 与String最大的区别在于,它可以进行修改操作。
- Append();
- Delete();
- 如果一个字符串不需要任何改变,则使用String类而不使用StringBuffer类。Java可以完成对String类的优化。
- File类特意提供了一种抽象,这种抽象是指不依赖机器的方式来处理很多文件和路径名依赖机器的复杂问题。File类包含很多获取文件属性的方法以及重命名和删除文件的方法。但是,File类不包含读取文件内容的方法。
- 方法next()和nextLine()都会读取一个字符串。Next()方法读取一个由分隔符分隔的字符串,但是nextLine()读取一个以行分隔符结束的行。
注意,令牌读取方法不能读取令牌后面的分隔符。如果在令牌读取方法之后调用nextLine();该方法读取从这个分隔符开始,到这行的行分隔符结束的字符,这个行分隔符也被读取,但是它不是nextLine()返回的字符串部分。
- public String[] split(String regex, int limit)
- The limit parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array's length will be no greater than n, and the array's last entry will contain all input beyond the last matched delimiter. If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.
- File类不能创建文件以及读写文件。只能获取文件的属性和对文件操作。
- String s1 = "Welcome to Java";
System.out.println(s1.startsWith("Wel"));//true
System.out.println(s1.endsWith("Java"));//true
startsWith 和 endsWith 是用于判断的.
- S1.replace("o","T")方法并不会改变s1 只是返回一个改变后的字符串.
- 如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法。
- Super() 必须出现在子类构造方法的第一行。
- 构造方法链。
- 最好是为每个类提供一个无参的构造方法~~,因为在继承的时候,编译器需要隐式的调用该方法。
- 面向对象的程序设计的三个特点:封装、继承、多态。
- 动态绑定。o调用的到底是哪个toString()方法是由o的实际类型所决定的。调用方法的时候是在运行的时候动态绑定的。
- 类型转换。总是可以将一个子类的实例转换为一个父类的变量,因为子类的实例永远是它的父类的实例。当把一个父类的实例转换成它的子类的变量时,必须使用转换记号进行显示转换。(作用就是在如果一个父类的引用指向子类的变量时,这时候用该引用去调用子类的方法的时候会出现编译错误。)
- 防止类扩展。使用final修饰符声明一个类是终极的,是不能作为父类的。
如 public final class{}; 也可以声明一个方法是终极的, 是不能被它的子类覆盖的。 如 public final void m(){};
- 静态方法和实例方法一样可以继承,但是静态方法不能覆盖。如果父类中定义的静态方法在子类中重新定义,那么父类中定义的方法被隐藏。
- Swing组件更少的依赖平台和GUI。
- GUI组件不能被多个容器共享,因为一个组件只能在一个容器中出现一次.边界和图标是可以共享的。这样,可以创建一个边界或图标,然后使用它来设计任意一个GUI组件的border或者icon属性。
- Component and JComponent are abstract classes, so you cannot create instances from them. The last line is wrong, because you cannot add an object to a container. Only an instance of Component can be added to a container.
- It displays only two buttons. The buttons cannot be shared也就是组件不能被共享,智能被添加一次。
- 对于异常处理的理解我们有偏差。对于一个系统来说,不知道哪里出错是可怕的, 能提前的预知可能会出现的异常,然后在运行的时候能够捕获它,就是算是处理异常最重要的一步了。也是处理异常的第一步,然后根据机器给出的信息, 人工的处理。故,Java中所谓的异常处理,不如叫异常捕获来得好。
- 异常基本上都有两种构造方法 A(); A(String Message);
- 不能使用new操作符从一个抽象类创建一个实例,但是抽象类可以用作一种数据类型。因此,下面的语句是创建一个元素是GeometricObject类型的数组。
GeometricObject[] objects = new GeometricObject[10];
- 如果没有覆盖clone()方法,程序就会收到一个语法错误,因为在java.lang.Object中的clone()是被保护的。如果House不实现Java.lang.Cloneable,调用 super.clone()会导致一个CloneNotSupportException异常。所以 必须覆盖clone()方法并实现Cloneable。
- 永远不要直接调用paintComponent方法,它应该在视图区域改变的时候由JVM调用或者由repain()方法调用。应该覆盖paintComponent方法告诉系统如何绘制视图区域,但是永远都不要覆盖repaint()方法。Repaint()方法提出更新视图区域的请求并且立即返回,它的效果是异步的,这就意味着,它由JVM决定在独立的线程上执行paintComponent方法。
- 如果是单选按钮,必须先新建一个ButtonGroup 然后将这些按钮添加进去。
- 写界面用区域的分类, 用等级分步骤.
屏幕剪辑的捕获时间: 2016/9/22 21:22
- 在做事件监听的时候,为了能得到相应的组件应该把组件定义为成员变量,把Jframe 定义为整个类 然后在这个类中进行相应的操作。
- 非静态内部类在其他类中的声明方式
OuterClass.InnerClassinnerObject = outerObject.new InnerClass();
If the inner class is static, use the followingsyntax to create an object for it:
- jtf.requestFocusInWindow()请求将输入聚焦于jtfMessage上。
- JTextArea的属性lineWrap设置为true,这样就会自动换行;属性wrapStyleWord设置为true,这样,就按照单词而不是按照字符换行。
- 注意 BufferedReader 方法中的readLine()方式 不读取换行,因为它是以换行作为标志来判断的, 我们以这种方式读取完文本后,文本会练成一串。我们要输出的时候应该在s+"\r\n"输出。读取是按行一次一次来的。
while((s = bufferedReader.readLine()) != null){
System.out.println("1");
bufferedWriter.write(s+"\r\n");
}
这里将会输出3个1;