admin 管理员组

文章数量: 887017

java感悟

至此已经学习了一个学期的Java,我在这里总结一下学习内容,过程,和感悟。

从面向过程到面向对象,这是从学习C语言到学习Java最大的不同。面向过程就是分析出解决问题所需要的步骤,然后调用函数把这些步骤一一实现,使用的时候一个一个依次调用就可以了;而面向对象是把构成问题的事物分解成各个对象,建立对象来描叙某个事物在整个问题的步骤中的行为。这个本质区别相信大家早已有所体会。而Java的单一职责原则,开闭原则,封装和继承,多态思想则是学好Java所必须掌握的。(1)单一职责是应该有且只有一个原因引起类的变更,即一个职责一个接口,但是划分职责时并没有一个标准,最终都是需要从实际的项目去考虑。因此我们在设计的时候,尽量单一,然后对于其实现类就要多方面的考虑。如果死套单一职责原则,则会增加很多类,给维护带来不便。(2)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,尽量不去修改原有的代码,实现一个热插拔的效果,为了使程序的扩展性好,易于维护和升级。(3)封装是指将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。它能隐藏类的实例细节,方便修改代码和实现功能。将实例变量标记为私有private变量,提供共有的getter与setter来控制存取动作,这样能维持安全性(4)继承则是子类继承父类,子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有),在父类中只定义一些通用的属性和方法。子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。从而实现了实现代码的复用,使程序看起来更加简洁。(5)多态就是对象的多种形态,父类的引用可以指向本类的对象,父类的引用可以指向子类的对象。创建本类对象时,调用的方法为本类方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法;且可向上或向下类型转换。

学习的内容由浅入深,过程也越发困难。从一开始的掌握输入输出:Scannner sc=new Scanner(System.in); double a=sc.nextdoulbe();System.out.println(“a=”+a);完成简单的java程序的编写;到数据类型转换,再到一些简单方法的编写:

double area(double r1) {

double S1=Math.PI*Math.pow(r1, 2);

return S1;

}这个很像C语言,也不难

再到类的调用:Cirle cirle=new Cirle();

double S1=cirle.area(a1);

System.out.println("该圆的面积为:"+S1);

class Cirle{

double area(double r1) {

double S1=Math.PI*Math.pow(r1, 2);

return S1;

}

double girth(double r1) {

double C=2*Math.PI*r1;

return C;

}

}本质上也很像C语言的函数调用

再到类的继承:

abstract class Shape{

public Shape() {

}

public abstract double getArea();

public abstract boolean validate();

public String toString() {

return String.format("%.2f",getArea()).toString()+" ";

}

}

class Circle extends Shape{

private double radius;

public Circle() {

}

public Circle(double radius) {

this.radius = radius;

}

public double getRadius() {

return radius;

}

public void setRadius(double radius) {

this.radius = radius;

}

public double getArea() {

return Math.PI*Math.pow(radius, 2);

}

public boolean validate() {

if(radius<0)

return false;

else

return true;

}

}父类一般是abstract抽象类,子类要有关键字extends 继承父类,使用super 关键字继承父类属性,访问父类变量

再到多态:

public class Goods {

String name;

boolean p;

public void crossRiver() {

p=!p;

System.out.println(name+"在过河");

}

}

public class Vegetable extends Goods{

boolean p;

Vegetable(){

super.name="vegetable";

}

}

public static void main(String[] args) {

Farmer farmer=new Farmer();

Goods vegetable=new Vegetable();

farmer.crossRiver();

crossRiver(farmer,vegetable);

}一个类定义总的方法和属性,其他的类再根据需要进行细化

再到字符串的相关使用:

StringBuffer sb = new StringBuffer();

sb.append("haha"); //添加字符串

sb.insert(2, "it");//在指定位置插入

sb.delete(1, 4);//删除

sb.replace(1, 4, "cast");//替换指定范围内的内容

String str = sb.toString();

再到正则表达式的相关使用:

1.[abc] : 表示可能是a,可能是b,也可能是c。

2.[^abc]: 表示不是a,b,c中的任意一个

3.[a-zA-Z]: 表示是英文字母

4.[0-9]:表示是数字

简洁的字符表示

.:匹配任意的字符

\d:表示数字

\D:表示非数字

\s:表示由空字符组成,[ \t\n\r\x\f]

\S:表示由非空字符组成,[^\s]

\w:表示字母、数字、下划线,[a-zA-Z0-9_]

\W:表示不是由字母、数字、下划线组成

数量表达式

1.?: 表示出现0次或1次

2.+: 表示出现1次或多次

3.*: 表示出现0次、1次或多次

4.{n}:表示出现n次

5.{n,m}:表示出现n~m次

6.{n,}:表示出现n次或n次以上

使用Pattern p = Patternpile("a*b");进行实例化

Matcher类的实例化依赖Pattern类的对象Matcher m = p.matcher("aaaaab");按我的感受来说,正则表达式这一类的题目是最难的,因为往往涉及到很多类,计算,还要分很多情况,不仅仅是写一个表达式,为了完成一项功能你还要去做很多别的添加。

再到界面基础设计:

public void start(Stage stg) throws Exception{//Stage舞台

Button ok=new Button("OK");

Scene scene=new Scene(ok,200,200);//scene场景

stg.setTitle("My java Fx");

stg.setScene(scene);

stg.show();

stage.setTitle("new stage");

stage.setScene(newScene(newButton("cancle"),100,100));

stage.show();

}这些都不难,有点像规定死板的东西,你按照需要去设定就好了

再到在界面的基础上设置动画:

Button b1=new Button("roll");

Button b2=new Button("pause");

Button b3=new Button("stop");

b1.setOnAction(new EventHandler() {

public void handle(ActionEvent args) {

t.setCycleCount(Timeline.INDEFINITE);

t.play();

}

});

b2.setOnAction(e->{

if(t.getStatus()==Animation.Status.PAUSED) {

t.play();

}else {

t.pause();

}

});

b3.setOnAction(e->{

t.stop();

});

简单动画设计也很难,你要事先想好动画的每一步,例如偏转的角度,移动范围,形状,颜色,位置等,需要较严谨的数学思维。

总的来说,java语言的优点有简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。但学起来Java比C语言难的多,功能也更强大,在学习Java的语法时发现Java的语法是类似c语言的,所以语法学习的比较轻松。但有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用一直都是个问题。编程时还有很多细节需要注意,那种少打了括号,符合中英文的问题还算小事,如果犯了逻辑错误则要花费大量时间调试。在学习的过程中,最好不是仅仅停留在java表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。在学习的过程中一定要动手做、试着写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己。

本文标签: java感悟