zoukankan      html  css  js  c++  java
  • 问渠那得清如许?为有源头活水来。——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。

    参考资料

  • 相关阅读:
    Unity 3(一):简介与示例
    MongoDB以Windows Service运行
    动态SQL中变量赋值
    网站发布IIS后堆栈追踪无法获取出错的行号
    GridView Postback后出错Operation is not valid due to the current state of the object.
    Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
    SQL Server 问题之 排序规则(collation)冲突
    IIS 问题集锦
    linux下安装mysql(ubuntu0.16.04.1)
    apt-get update 系列作用
  • 原文地址:https://www.cnblogs.com/wule/p/6515789.html
Copyright © 2011-2022 走看看