Java学习个人感悟:
-
1、我感觉学习java应该是循环渐进,有始有终,勤奋细心,脚踏实地。
java是一门有着阶梯性的一们语言,如果要学习它。我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中オ会遇到更少的麻烦。
java是一门更倾向于网络的语言。不要上来就想着什么高级软件设计,这样不好,因为这没有基础。在以后的学习中很可能遇到很多的麻烦,这就不好了。 -
2、信心,恒心,毅力是最重要的。这是我们必须具备的心理素质。要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会放弃学习java,没有经历风雨怎么见彩虹。编程就是有的时候挫折不断。会遇到很多的困惑。但是一旦你弄懂了,或者是你把问题解決了,你会感到很兴奋,编程的快乐就在此。
-
3、多看看一些资料,多多利用网上资源,像百度、搜狗可以查到很多辅助性资料,这样才好。也要学会总结和领会,当然,学习javaー个人要有一个人的想法,也有自己的独特学习方法。总之适合自己的才是最好的。
-
4、java的学习需要理解代码的思路。在写代码与学习java知识点时,往往对于每句代码都应该理解透彻,在以后的代码书写中,自己才能写出正确的代码,甚至于找出自己的代码错误。这对于代码的理解透彻,就需要自己在上课时,好好理解老师的代码思维,自己也需要多看看关于代码的书,加深理解。
-
5、java的学习需要保持良好的心态。在进行代码实操时,自己写出大量的代码却运行不出结果。这时,自己并不能因为不耐烦与困难的打击就直接放弃,而是要进行学习,通过自纠,问同学,找课外知识来解决问题。同时,在学习java的漫漫长路中,坚持是十分重要的。在坚持中,找寻学习的方式,让自己进步与成长。
-
6、java的学习需要多做,多思考。在java学习中,不仅要学会打课内的代码,也需要通过百度找寻课外的代码,举一反三,自己解决很多的问题。
-
7、在这半年的学习中,我对于java有了初步的认识与了解,我知道自己真正优秀掌握好java还需要一段时间的学习,现阶段只是把基础和各种规则有了清晰认识,思路构建不难、代码简化设计不难、难的是对书上介绍的各种普通方法和构造方法等的充分利用还有困难,但我相信我自己只要有颗想学习好java的心,对于以后的困难是不惧怕的,我相信在学习java中,自己是在此过程中不断成长的,进步的。
参考文献:
一、面向过程的思想和面向对象的思想
面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当拿到一个问题时,分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,而应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法。这是第二点。最后分析类和类之间具体有什么关系,这是第三点。
面向对象有一个非常重要的设计思维:合适的方法应该出现在合适的类里面
二、简单理解面向对象
就是在程序里面首先分解出来的应该是注意不再是一步一步的过程了,而是首先考虑在这个问题域里面或者程序里面应该具有有哪些对象,所以从现在开始考虑任何问题脑子里不要再想着我实现这件事我第一步应该干什么,第二步应该干什么,如果这样想,那就是面向过程的思维了。面向对象的思维是,当碰到这个问题域的时候,碰到这个程序的时候,首先应该把这个问题里有哪些对象,对象与对象之间有什么关系抽象出来。
三、面向对象的设计思想
面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。
面向对象更加强调运用人类在日常生活的逻辑思维中经常采用的思想方法与原则,如抽象、分类,继承、聚合、多态等。
人在思考的时候,首先眼睛里看到的是一个一个的对象。
四、对象和类的概念
对象是用于计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。
类是用于描述同一类的对象的一个抽象的概念,类中定义了这一类对象所具有的静态属性和动态属性
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
周总结关联汇总:
Java 课程内容小总结:
一:java语言基础部分:
1:基本数据类型
java语言有8种基本数据类型:
- byte(占1个字节);
- short(占2个字节);
- int(占4个字节);
- long(占8个字节);
- float(占4个字节);
- double(占8个字节);
- char(占2个字节);
- boolean(占1个字节)。
2:java命名规则:
包名:所有字母都小写,比如,xxxyyyzzz
类名,接口名:所有单词首字母大写,比如,XxxYyyZzz
变量名,函数名:第一个单词小写,其他单词首字母大写,比如,xxxYyyZzz
常量名:所有字母大写,多单词用下划线分割,比如,XXX_YYY_ZZZ
3:运算符优先级:
-
逻辑与&& 优先级 大于 逻辑或||
-
按位与& 优先级 大于 按位或|
4:java不同点于C语言,字符串String,而C语言只是char输入单个字符;且String 一旦创建了 String 对象是不可改变的。
5:Java 方法:
-
println() 是一个方法。
-
System 是系统类。
-
out 是标准输出对象。
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。 -
Java方法是语句的集合,它们在一起执行一个功能。
-
方法是解决一类问题的步骤的有序组合
-
方法包含于类或对象中
-
方法在程序中被创建,在其他地方被引用
-
方法的优点:
-
- 使程序变得更简短而清晰。
-
- 有利于程序维护。
-
- 可以提高程序开发的效率。
-
- 提高了代码的重用性。
-
方法的命名规则
-
1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。
-
2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test
_ ,例如 testPop_emptyStack。 -
方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
-
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
-
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
-
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没* 有返回值。在这种情况下,returnValueType 是关键字void。
-
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
-
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
-
方法体:方法体包含具体的语句,定义该方法的功能。
-
方法调用
-
Java 支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
当方法返回一个值的时候,方法调用通常被当做一个值。
-
通过值传递参数
-
调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供。
-
方法的重载:
-
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
-
重载的方法必须拥有不同的参数列表。
-
构造方法
-
当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。
-
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
-
不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同。
二:类、对象及特性
1:类和对象
-
类:对现实生活中事物的描述
-
对象:就是这类事物中实实在在的个体,java中一切都是对象,具体对象是java在堆内存中用new建立的实体
2:权限修饰符
一个.java文件中只能有一个public类
static: 用于修饰成员(成员变量和成员方法),当成员被static修饰后,该成员可被类名直接调用,类名.静态成员
static修饰后的特点:
随着类的加载而加载,优先于对象存在,被所有对象共享,可以被类名直接调用。
静态方法只能访问静态成员,其方法中不能定义super,this关键字,因为静态优先于对象存在,主函数是静态的
静态优点:把对象的共享数据单独存储,节省空间,可被类名直接调用。缺点:生命周期过长,访问出现局限(只能访问静态)。
3:this关键字:
- 代表本类对象,哪个对象调用this所在的函数,this就代表哪个对象
4:构造函数
- 一个类中默认会有一个空参数的构造函数,其权限和所属类的权限一致
- 作用是给对象进行初始化,对象一建立就会调用与之对应的构造函数。
- 静态代码块用来给类初始化,比构造代码块先执行,后者给对象初始化,然后才构造函数执行。
5:特性
封装:隐藏对象属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性
继承:必须类与类间有关系才能继承,提高代码复用性,java只支持单继承,但是可以有多层继承,但是可以用实现来弥补
子类为什么一定要访问父类的构造函数呢:因为父类中的数据,子类是可以直接获取的,所以子类对象在建立的时候,需要先查看父类是如何对这些数据进行初始化的,如果要指定父类中指定的构造函数,可以手动定义super语句来实现。
多态:某一类事物的多种存在形态
多态的实现:父类的引用指向了自己的子类对象(向上转型)
多态的前提:类与类之间有关系,继承或实现,通常还存在覆盖
多态的好处:提高程序扩展性,弊端:父类引用只能访问父类中成员。
6:抽象类
-
抽象方法一定在抽象类中
-
抽象方法和抽象类必须被关键字abstract修饰
-
抽象类不能用new创建对象,不能实例化,因为没意义,方法没内容
-
抽象类中的抽象方法要被使用,必须由子类重写所有的抽象方法后,建立子类对象调用
7:接口
接口是对外暴露的规则,是程序的功能扩展,接口可以用来多实现,类与接口是实现关系,类可以继承一个类的同时实现多个接口,接口与接口间可有继承关系。
接口是特殊的抽象类,接口成员有固定修饰符,常量:public static final 方法:public abstract
接口不能创建对象,被子类实现后,子类需重写接口中所有抽象方法,这样子类才能实例化,否则子类还是一个抽象类。
8:重写与重载
- 重写:是对父类方法的重写,子父类方法要一模一样
- 重载:同名函数的参数列表不同,看练习:
9:内部类
描述事物时,事物内部还有事物,该事物可用内部类描述。
Java的内部类构造时持有对外部类的应用,C语言不会,这一点和其不一样。这点容易引起内存泄露;
在Java中,非静态的内部类和匿名内部类都会隐式地持有其外部类的引用。静态的内部类不会持有外部类的引用。
10、private修饰符
- 内部类访问规则:
内部类可直接访问外部类(这里的意思当然就是包含内部类的类)中成员,包括私有。
外部类要访问内部类,必须建立内部类对象。
内部类可被static修饰,此时其只能访问静态成员;但是内部类定义在局部时,也就是在外部类的方法中定义一个类,此时的内部类是不能被成员修饰符修饰的,此时仍能访问外部类中的成员,并只能访问其所在的局部中的被final关键字修饰的局部变量。
11:异常处理机制
java两个重要特性,垃圾回收机制和异常处理机制,使得java没有内存泄露,实现平台无关。
这个地方注意catch捕捉到异常后要有个处理,不要不写也不要直接toString,printStackTrace(),要处理哦。还有一些必须执行的语句要放到finally代码块中,比如数据库的关闭等。
throws和throw区别:
throws使用在函数上,throw使用在函数内
throws后面跟异常类名,可以跟多个,逗号隔开,throw后跟异常对象。
12、多线程:
三、String方法:
1 char charAt(int index)
返回指定索引处的 char 值。
2 int compareTo(Object o)
把这个字符串和另一个对象比较。
3 int compareTo(String anotherString)
按字典顺序比较两个字符串。
4 int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。
5 String concat(String str)
将指定字符串连接到此字符串的结尾。
6 boolean contentEquals(StringBuffer sb)
当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。
7 static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
8 static String copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String。
9 boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
10 boolean equals(Object anObject)
将此字符串与指定的对象比较。
11 boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
12 byte[] getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
13 byte[] getBytes(String charsetName)
使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此字符串复制到目标字符数组。
15 int hashCode()
返回此字符串的哈希码。
16 int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
17 int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
18 int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
19 int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
20 String intern()
返回字符串对象的规范化表示形式。
21 int lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。
22 int lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
23 int lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
24 int lastIndexOf(String str, int fromIndex)
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
25 int length()
返回此字符串的长度。
26 boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
28 boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
29 String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
30 String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
31 String replaceFirst(String regex, String replacement)
使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
32 String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
33 String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
34 boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
35 boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
36 CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的一个子序列。
37 String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
38 String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
39 char[] toCharArray()
将此字符串转换为一个新的字符数组。
40 String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
41 String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。
42 String toString()
返回此对象本身(它已经是一个字符串!)。
43 String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
44 String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。
45 String trim()
返回字符串的副本,忽略前导空白和尾部空白。
46 static String valueOf(primitive data type x)
返回给定data type类型x参数的字符串表示形式。
四、Java图形界面学习(Swing轻量级)
- java图形化用户界面总结常见的Swing组件
1、按钮
所有的按钮,包括复选框、单选和菜单项是从AbstractButton继承的。
- 例:
package 图形用户界面;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.basic.*;
import java.awt.*;
@SuppressWarnings("serial")
public class Buttons extends JFrame{
private JButton jb = new JButton("JButton");
private BasicArrowButton
up = new BasicArrowButton(BasicArrowButton.NORTH),
down = new BasicArrowButton(BasicArrowButton.SOUTH),
right = new BasicArrowButton(BasicArrowButton.EAST),
left = new BasicArrowButton(BasicArrowButton.WEST);
public Buttons() {
setLayout(new FlowLayout());
add(jb);
add(new JToggleButton("JToggleButton"));
add(new JCheckBox("JCheckBox"));
add(new JRadioButton("JRadioButton"));
JPanel jp = new JPanel();
jp.setBorder(new TitledBorder("Directions"));
jp.add(up);
jp.add(down);
jp.add(left);jp.add(right);
add(jp);
}
public static void main(String[] args) {
run(new Buttons(),350,200);
}
private static void run(Buttons buttons, int i, int j) {
// TODO Auto-generated method stub
System.out.println();
}
}
2、图标
要打开一个文件并且得到图形,创建ImageIcon对象并把文件名传递给它即可。
3、工具提示
用来创建用户接口的类,绝大多数都是从JComponet派生而来的。
例:jc.setToolTipText("My tip");
4、文本域
JTextField:JTextField 是一个轻量级组件,它允许编辑单行文本。 JTextField 应与 java.awt.TextField 具有源代码兼容性,理应如此。此组件具有 java.awt.TextField 类中没有的功能。
5、边框
JComponent有一个setBorder()方法,它允许你为任何可视组件设置各种边框。jp.setBorder(b);
6、一个迷你编译器
JTextPane:提供编译文本的功能
7、复选框
复选框:选中和不选,用JCheckBox
8、单选按钮
要设置一组关联的JRadioButton,你需要把它们加到ButtonGroup。
9、组合框
调用setEditable()方法。
10、列表框
列表框(ListBox)用于提供一组条目(数据项),用户可以用鼠标选择其中一个或者多个条目,但是不能直接编辑列表框的数据。当列表框不能同时显示所有项目时候,他将自动添加滚动条,使用户可以滚动查阅所有选项。
11、页签面板
JtabbedPane 允许你创建“页签式的对话框”,它能沿着窗体的一条边放置类似文件夹上的页签,你所要做的只是在页签上单击,用以向前进入到另一个不同的对话框中。
12、消息框
可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。
13、菜单
包括JApplet、JFrame、JDialog以及它们的子类,调用setJMenuBar()方法,接受一个JMenuBar对象作为参数。
14、弹出式菜单
弹出式菜单弹出式菜单(也称为Context,快捷,弹出或弹出式菜单是一个图形用户界面(GUI))的出现后,为用户交互提供了便利。
15、绘图
JComponent。
16、对话框
从JDialog继承,另一个类型的Window
17、文件对话框
18、Swing组件上的HTML
19、滑块与进度条
20、选择外观
21、树、表格和剪贴板