imageViewer-JAVA一个简单的图片查看

时间:2016-9-2   作者:   分类: Java   热度:117°  评论:0  
时间:2016-9-2   分类: Java    热度:117   评论:0

一个简单的图片查看

 

ImageViewer_01.pngImageViewer_02.pngImageViewer_03.png

package imageViewer;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.naming.event.EventDirContext;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class ImageViewer {
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   
   @Override
   public void run() {
    JFrame frame = (JFrame) new ImageViewerFrame();
    frame.setTitle("图片查看");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    
   }
  });

 }

}
class ImageViewerFrame extends JFrame {
 private JLabel lable;
 private JFileChooser chooser;
 private static final int DELAULT_WIDTH = 300;
 private static final int DELAULT_HIGHT = 400;
 public ImageViewerFrame(){
  setSize(DELAULT_WIDTH,DELAULT_HIGHT);
  lable = new JLabel();
  add(lable);
  chooser = new JFileChooser();
  chooser.setCurrentDirectory(new File("."));
  
  
  
  JMenuBar menuBar= new JMenuBar();
  setJMenuBar(menuBar);
  
  JMenu menu = new JMenu("文件");
  menuBar.add(menu);
  
  JMenuItem openItem = new JMenuItem("打开");
  menu.add(openItem);
  openItem.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent event) {
    int result = chooser.showOpenDialog(null);
    
    if(result == JFileChooser.APPROVE_OPTION){
     String name = chooser.getSelectedFile().getPath();
     lable.setIcon(new ImageIcon(name));
    }
    
   }
  });
  
  JMenuItem exitItem = new JMenuItem("关闭");
  menu.add(exitItem);
  exitItem.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent event) {
    System.exit(0);
    
   }
  });
 }
}

 

String,StringBuffer与StringBuilder的不同

时间:2016-6-29   作者:   分类: Java   热度:105°  评论:0  
时间:2016-6-29   分类: Java    热度:105   评论:0

String 字符串常量
StringBuffer 字符串变量(线程安全)

StringBuilder 字符串变量(非线程安全)



String类

String 本身的值是不能改变的,任何对String的操作都会引起新的String对象的产生。 
   String a = "a"; //假设a指向地址0x0001 
   a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。 
   String的操作都是改变赋值地址而不是改变值的操作


StringBuffer类

     不可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。

 

    每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 。

    StringBuffer 是线程安全的可变字符序列。类似于 String 的字符串缓冲区,但不能修改。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发 生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuilder类
     从 JDK 5.0 开始,为StringBuffer类增添了一个单个线程使用的等价类,即 StringBuilder 。与StringBuffer相比,通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 
   StringBuffer是线程安全的,StringBuilder是非线程安全的。
   速度从慢到快:String < StringBuffer < StringBuilder 。


Java面试题

时间:2016-6-27   作者:   分类: Java   热度:75°  评论:0  
时间:2016-6-27   分类: Java    热度:75   评论:0

1、面向对象的特征有哪些方面?

答:面向对象的特征主要有以下几个方面:

1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。

3)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

4)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。


2、访问修饰符public,private,protected,以及不写(默认)时的区别?

答:区别如下:

作用域    当前类  同包 子类 其他

public        √        √       √      √

protected  √        √       √      ×

default       √       √       ×      ×

private       √        ×      ×      ×

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

java实现MD5加密

时间:2016-5-31   作者:   分类: Java   热度:116°  评论:0  
时间:2016-5-31   分类: Java    热度:116   评论:0

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.junit.Test;
 
public class MD5Encryption {
    private MD5Encryption() {
 
    }
 
    @Test
    public String getEncryption(String originString) {
        String result = null;
        if (originString != null) {
            try {
                // 指定加密的方式为MD5
                MessageDigest md = MessageDigest.getInstance("MD5");
                // 进行加密运算
                byte bytes[] = md.digest(originString.getBytes());
                for (int i = 0; i < bytes.length; i++) {
                    // 将整数转换成十六进制形式的字符串 这里与0xff进行与运算的原因是保证转换结果为32位
                    String str = Integer.toHexString(bytes[i] & 0xFF);
                    if (str.length() == 1) {
                        str += "F";
                    }
                    result += str;
                }
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }
        return result.toUpperCase();
    }

Java修饰符类型

时间:2016-5-25   作者:   分类: Java   热度:120°  评论:0  
时间:2016-5-25   分类: Java    热度:120   评论:0

java语言提供了很多修饰符,主要分为以下两类:
        访问修饰符
       非访问修饰

修饰符用来定义类、方法或者变量,通常放在语句的最前端。

public class className {
   // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
   }

  1. 访问修饰符
  Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
  • 默认的,也称为default,在同一包内可见,不使用任何修饰符。
  • 私有的,以private修饰符指定,在同一类内可见。
  • 共有的,以public修饰符指定,对所有类可见。
  • 受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。
     2. 
非访问修饰符
  为了实现一些其他的功能,Java也提供了许多非访问修饰符。
  • static修饰符,用来创建类方法和类变量。
  • Final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
  • Abstract修饰符,用来创建抽象类和抽象方法。
  • Synchronizedvolatile修饰符,主要用于线程的编程。
    3. 访问控制和继承

  请注意以继承的规则:
  • 父类中声明为public的方法在子类中也必须为public。
  • 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。
  • 父类中默认修饰符声明的方法,能够在子类中声明为private。
  • 父类中声明为private的方法,不能够被继承。
  4. 如何使用访问控制符
   
访问控制符可以让我们很方便的控制代码的权限:

  • 当需要让自己编写的类被所有的其他类访问时,就可以将类的访问控制符声明为 public。
  • 当需要让自己的类只能被自己的包中的类访问时,就可以省略访问控制符。
  • 当需要控制一个类中的成员数据时,可以将这个类中的成员数据访问控制符设置为 public、protected,或者省略。

简单的java用户名和密码登陆验证

时间:2016-5-4   作者:   分类: Java   热度:208°  评论:0  
时间:2016-5-4   分类: Java    热度:208   评论:0

public class LoginCheck {

public static void main(String[] args) {
String OriginalUserName = "张三@163.com";
String OriginalPwd = "123456" ;
String UserName,UserPwd;
//输入用户名和密码
System.out.println("输入用户名:");
Scanner reader=new Scanner(System.in);
UserName=reader.nextLine();
System.out.println("输入密码:");
Scanner reader1=new Scanner(System.in);
UserPwd=reader1.next();
//获得用户输入的用户名和密码
if (! UserName.equals(OriginalUserName)) {
System.out.println("用户名不正确!");

} else if(!UserPwd.equals(OriginalPwd)){
System.out.println("密码不正确!");
}else {
//查找用户名中有没有'@'
int index = OriginalUserName.indexOf('@');
//截取'@'前的用户名
String  name = OriginalUserName.substring(0,index);
System.out.println(name+",欢迎你!");

}

}

}


返回顶部    首页    手气不错    QQ邮箱:1085911874@qq.com后花园   
版权所有:Remember    站长:                 sitemap