• 问渠那得清如许?为有源头活水来。——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。

    参考资料

  • 相关阅读:
    生成器,迭代器
    [LeetCode] Minimum Depth of Binary Tree
    [LeetCode] Sum Root to Leaf Numbers
    [LeetCode]Sort Colors
    [LeetCode] Remove Nth Node From End of List
    [LeetCode] Palindrome Number
    [LeetCode] Container With Most Water
    [LeetCode] Pascal's Triangle II
    [LeetCode] Path Sum
    [LeetCode] Search a 2D Matrix
  • 原文地址:https://www.cnblogs.com/wule/p/6515789.html
Copyright © 2020-2023  润新知