问渠那得清如许?为有源头活水来。——java面向对象的思想
20169205 2016-2017-2 《移动平台应用开发实践》第2周学习总结
教材学习内容总结
本次作业要求的部分主要是Java高级语言实现面向对象编程的基本方法,其中所介绍的面向对象思想其实不仅仅可以应用于Java语言的,可以视为现代软件工程师的基本功。
想要入门java,我认为要熟练掌握面向对象相关的各章内容,须知打好面向对象基础非常关键,不然,在Java技术领域将行之不远。另外,学好这部分的内容,也有助于学习其他面向对象的编程语言,比如C-sharp和C++,特别是与Java非常相似的C-sharp,本部分介绍的很大一部分内容都可以直接用于C-sharp,而JDK中的许多组件,也能在.NET Framework中找到类似的。
对于掌握那些汲取了面向对象理论成果的其他类型编程语言(比如动态类型编程语言JavaScript),本部分内容也是有帮助的。
总而言之,通过此部分学习,我认为学会知识迁移是一种重要的学习方法。
教材学习中的问题和解决过程
1、字符串连接中的split方法
在书中学习字符串操作时,写过一段简单的字符串连接程序,中间用到了split方法。但在测试的时候,java虚拟机JVM报数组越界错误:java.lang.ArrayIndexOutOfBoundsException ;
测试代码如下:
public class transferpic {
public static String concatString(String unselectStr){
String splitStr = unselectStr.split(".")[0];
String selectStr= splitStr.concat("_2.jpg");
return selectStr;
}
public static void main(String[] args){
System.out.println(concatString("dfa.jpg"));
}
}
异常信息如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at test.transferpic.concatString(transferpic.java:5)
at test.transferpic.main(transferpic.java:12)
如果我在mian方法中,将System.out.println(concatString("dfa.jpg")); 改为System.out.println(concatString(""));
也就是传入一个空字符串,它不报错,会给出一个_2.jpg的结果。
解决方案:
通过查看相关文档了解到如下信息。
在java.lang包中有String.split()方法,返回是一个数组:
①、如果用“.”作为分隔的话,必须是如下写法:String.split("\."),这样才能正确的分隔开,不能用String.split(".");
②、如果用“|”作为分隔的话,必须是如下写法:String.split("\|"),这样才能正确的分隔开,不能用String.split("|"); “.”和“|”都是转义字符,必须得加"\";
③、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");
2、java界面对面之间的相互跳转(好久之前的问题,最近通过看书解决了)
package wule;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.Rectangle;
public class Dasi extends JFrame implements jiemian{
private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JButton jButton = null;
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.add(getJButton(), null);
}
return jPanel;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(58, 26, 164, 46));
jButton.setText("按钮");
jButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
Jiemian jiemian=new Jiemian();
//System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
}
return jButton;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Dasi thisClass = new Dasi();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public Dasi() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJPanel());
this.setTitle("JFrame");
}
}
第二个界面的程序:
package wule;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
public class Jiemian extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jPanel1 = null;
/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jPanel1 = new JPanel();
jPanel1.setLayout(null);
}
return jPanel1;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Jiemian thisClass = new Jiemian();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public Jiemian() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJPanel1());
this.setTitle("你好");
}
}
解决方案
java中两个界面的类只要时在同一个程序中,则只需一个main函数就可以了,那个类是最先启动的main函数就放在那个类中,如上面代码所示第一个图形界面类调用“你好”的那个界面,那么你好的那个界面就不需要main函数了,具体修改方式参照下面的模型:
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Rectangle;
public class Class {
private JButton jButton = null;
private JieMian j = new JieMian();
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(58, 26, 164, 46));
jButton.setText("按钮");
jButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
j.start();
}
});
}
return jButton;
}
public static void main(String []args){
Class c = new Class();
}
}
public class JieMian extends JFrame{
public void start(){
this.setVisible(true);
}
}
学习进度条
码云项目地址

学习目标
| 项目 | 学习时间目标 | 实际进行时间 |
|---|---|---|
| First week | 8 | 8 |
| Second week | 10 | 8.5 |
希望能够通过系统地学习,探索一些开源项目并改进功能,养成良好的开发习惯,形成一套完整的android生态知识体系,并能完全自主开发一款具有一定实用价值的app。
参考资料
问渠那得清如许?为有源头活水来。——java面向对象的思想的更多相关文章
- 问渠那得清如许?为有源头活水来——对【近取Key】产品进行的深度测评与解析
在 Build To Show 的场景中,大家各显身手,用各种办法展现技术,的确很难在单一的维度上确定谁赢谁输.但是,在 Build To Win 的场景中,往往市场就是那么一块, 竞争对手占了 70 ...
- 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...
- 2018-2019-2 20175329许钰玮 实验二《Java面向对象程序设计》实验报告
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 (一)单元测试 对于单元测试中单元的含 ...
- 杨恒说李的算法好-我问你听谁说的-龙哥说的(java中常见的List就2个)(list放入的是原子元素)
1.List中常用的 方法集合: 函数原型 ******************************************* ********************************** ...
- WPF 的内部世界(Binding)
目录 一.控件与布局 二.Binding基础 前言 "一桥飞架南北, 天堑变通途" 写于1956年,1957年武汉长江大桥建成, 称之为:一桥飞架南北,大堑变通途.它形象地描述武汉 ...
- Welcome
唔.你好! 这里是 Evensgn 的笔记本. 我是 SD 省的一名高中 OIer,从初中就接触了 OI ,然而水平一直是弱弱哒. Evensgn 是我常用的 ID. 不忘初心,方能始终. E-mai ...
- Java四种引用类型
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 Java从1.2版本开始引入了4种引用,这四种引用的级别由高到低依次为:强引用>软引用>弱引用 ...
- Java 类加载机制 ClassLoder
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 一个类从被加载到内存中开始到卸载出内存为止,它的整个生命周期包括了:加载(loading).验证(V ...
- Java序列化Serializable和Externalizable
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 什么是Java序列化?为什么出现Java序列化?怎样实现Java序列化? 一.什么是Java序列化 ...
随机推荐
- Eclipse执行import命令导入maven项目时报错:Add a version or custom suffix using "Name template" in "Advanced" settings
新建了两个maven项目在E盘workspace目录,后面移到workspace/app_engine目录下提交svn,再通过Eclipse的File->import导入时报错了: Projec ...
- windows中文编码报错 com.google.gson.JsonIOException: java.nio.charset.MalformedInputException: Input length = 1
昨天碰到一个问题:同一个请求页面,页面经过匹配后调用http的post协议接口,部署在linux环境的没问题,本地Eclipse启动的tomcat也没问题,直接启动本地tomcat却报错了: 18:4 ...
- 搭建Ganglia乱码及其他问题总汇
搭建Ganglia乱码及其他问题 搭建完Ganglia监控后图像显示正常,但是文字却显示都是小方框,最后确定是由于系统缺少字体导致的, /usr/share/fonts/ Centos默认存放字体的 ...
- MVC匿名类传值学习
刚接触MVC+EF框架不久,但一直很困惑的就是控制器能否及如何向视图传递匿名类数据.宝宝表示很讨厌去新建实体类啦,查询稍有不同就去建一个实体类不是很麻烦吗,故趁阳光正好,周末睡到自然醒后起来尝试了之前 ...
- java二维数组求每行最大值,每列最小值,及输出数组主对角线上的元素
总结:完全搞不懂,行和列是怎么弄的,,,,, package com.c2; import java.util.Scanner; public class Oaa { public static vo ...
- 杂项:UN-APP
ylbtech-杂项:APP 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 10 ...
- 获得网址的Https的SSL证书并且保存到truststore
一.生成PEM文件 这里以邮件发送接口为例https://api.mailgun.net/v3/,首先运行以下命令: openssl s_client -host -prexit -showcerts ...
- 1050 String Subtraction
题意:给出两个字符串s1和s2,在s1中删去s2中含有的字符. 思路:注意,因为读入的字符串可能有空格,因此用C++的getline(cin,str).PAT系统迁移之后C语言中的gets()函数被禁 ...
- mysql表的增删改查
一.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为一条记录 二.创建表 cr ...
- 关于XSS漏洞的简介以及分类
不得不说注入的时代已经过去了,最近xss貌似比较热门.我就去恶补了一下,我表示我只是菜鸟,对xss不了解.所以从最基本的学起. 什么xss漏洞? 一.XSS攻击简介 作为一种HTML注入攻击,XSS攻 ...