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和Android开发学习指南

转载于:https://www.cnblogs.com/wule/p/6515789.html

问渠那得清如许?为有源头活水来。——java面向对象的思想相关推荐

  1. 问渠哪得清如许,唯有源头活水来-浅谈android 系统

    古人学问无遗力,少壮功夫老始成,纸上得来终觉浅,绝知此事要躬行 android系统是基于Linux平台的开源移动操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成. 底层以Linux内核 ...

  2. 问渠那得清如许,唯有源头活水来

    Java基础的源头就在这里. 是技术,就要经过刻苦的练习才能透彻的掌握,此外无捷径. 抛却一切浮躁,追溯源头,自然清静.

  3. 问渠哪得清如许,为有源头活水来

    问渠哪得清如许,为有源头活水来 如我是一朵雪花,     翩翩的在半空里潇洒, 我一定认清我的方向-- 飞扬,飞扬,飞扬,--     这地面上有我的方向.     不去那冷寞的幽谷,

  4. “问渠哪得清如许?为有源头活水来” – 提高技术源头数据的质量成为技术信息化热点

    越来越多的企业在花费巨资引入国外PLM系统后,发现很难达到当初预计的效果,原因就是技术源头的数据质量不高,PLM系统中管理的垃圾越多,系统的可用性越差. 青岛捷能汽轮机在实施西门子PLM系统后,重新大 ...

  5. 当我发现Python字典中不同key可以有相同哈希值后——问渠那得清如许

    迷雾重重 我们知道,字典的key是不同重复的.那么Python怎么比较两个key是否相同呢?在回答这个问题之前,先来看一段代码. class Position():def __init__(self, ...

  6. 读《移山之道》——问渠哪得清如许,为有源头活水来

    我是以一本看小说的心态看完了这本书,书中人物的角色活灵活现,通过愚公后代如何完成一个软件项目来介绍MSF和VSTS. 对于书中人物对话的小字部分,看起来是非常有趣的,引起了像我们这样刚开始接触软件开发 ...

  7. 问渠哪得清如许,为有源头活水来之TCP / UDP

    在TCP/IP对网络的划分下传输层试很重要的一层,通过阅读<图解TCP/IP>对传输层的TCP/UDP进行总结. UDP 1.UDP的特点 UDP不提供复杂的控制机制,利用IP提供面向无连 ...

  8. 问渠哪得清如许?为有源头活水来。——AI与传统文化会碰撞出何种火花呢?

    关乎人文,以化成天下 敦煌博物馆里,数字技术让一尊尊彩塑容颜常驻:电视剧<觉醒年代>,百年前的革命志士与屏幕前的我们跨时空对话:舞蹈诗剧<只此青绿>,用舞台重现大宋美学,为观众 ...

  9. java ssh2工具,SSH2代码生成工SSH2代码生成工具 PowerBy 清如许UnicodePowerBy

    SSH2代码生成工SSH2代码生成工具 PowerBy 清如许UnicodePowerBy SSH2代码生成工具 PowerBy 清如许Unicode 超值只卖2000元的SSH代码生成工具,快来购买 ...

最新文章

  1. mysql2005备份_创建完整数据库备份 - SQL Server | Microsoft Docs
  2. loadrunner中创建唯一随机数
  3. matlab-创建函数
  4. mysql 基于c_linux-基于MYSQL的C程序实践
  5. Javascript笔记:(实践篇)从jQuery插件技术说起(上篇)
  6. 太神奇!波士顿动力又出新视频!Spot 机器狗这次竟学会了跳绳...
  7. 念整数 mooc翁恺
  8. html5代码自动生成,vs code中设置html5 快速生成模板
  9. win10家庭版无法安装mysql_Win10安装MySQL
  10. ASP.NET MVC 重点教程一周年版 第三回 Controller与View
  11. Android音频的录制与播放
  12. 矩阵取数游戏【题解】
  13. oracle dataguard坏块,dataguard主库坏块的修复
  14. 程序员的表达能力 -- 程序员是表达大师! 提高形象思维能力 表达的基本模式 结构化思维能力 成长为优秀的架构师
  15. 没想到你们是这样的女生……
  16. C++统计正数数目和负数的数目,并计算平均值
  17. mysql中的BIT_LENGTH和LENGTH以及CHAR_LENGTH的区别
  18. RFID 动态Q静态Q是什么意思
  19. php access编程实例,PHP连接操作access数据库实例,access实例_PHP教程
  20. 使用FastAPI重写Django官网Polls教程

热门文章

  1. GSM MODEN短信发送模块详解(短信的读取、发送过程和编码、解码过程)
  2. linux 发送邮件 554,linux – Sendmail:“TLS verify = FAIL”,“554 5.1.8:发件人地址被拒绝:未找到MX记录”...
  3. MATLAB 点云粗糙度计算
  4. 网页显示自动日期(自动更新)
  5. 【示例】《Java程序设计》第二周博文:第二周 计算圆面积
  6. css(显示与隐藏、溢出)
  7. ISCC2021—Retrieve_the_passcode
  8. MySQL深度分页的问题及优化方案:千万级数据量如何快速分页
  9. 免费网站源码分享平台 有哪些好的源码网站
  10. EMQ 加入VMware 创新网络“威睿加速计划” 并将参加 VMware 创新网络 2019 高峰论坛