Java核心技术卷I (11版)第二章学习

本文详细介绍了Java核心技术卷I(11版)第二章的内容,包括HelloWorld程序Welcome.java的示例,以及使用Swing库创建的ImageViewer.java程序,展示了GUI组件的使用和JShell在Java9中的新特性。
摘要由CSDN通过智能技术生成

Java核心技术卷I (11版)第二章学习

Welcome/Welcome.java

public class Welcome
{
    public static void main(String[] args)
    {
        String greeting = "Welcome to Core Java!";
        System.out.println(greeting);
        for (int i=0;i < greeting.length(); i++)
            System.out.print("=");
        Syetem.out.println();
    }
}
  1. 主函数:public static void main()
  2. String是字符串类。
  3. String[] args: 这是方法的参数,它是一个字符串数组,可以用来从命令行接收参数。
  4. public static void main(String[] args): 这是Java程序的主入口点。当你运行一个Java程序时,JVM(Java虚拟机)会查找并执行这个方法。
  5. System.out.print(): 此方法仅用于输出信息到控制台,但不会在输出的内容后添加换行符。如果你想在输出的内容后面添加一个换行符,你需要手动添加 \n
  6. System.out.println(): 此方法不仅输出信息到控制台,而且会在输出的内容后自动添加一个换行符。
  7. 在JDK11中,单个源文件不用javac命令

ImageViewer/ImageViewer.java

import java.awt.*;
import java.io.*;
import javax.swing.*;
/**
A program for viewing images.
**/

public class ImageViewer
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(() -> {
        	var frame = new ImageViewerFrame();
            frame.setTitle("ImageViewer");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        });
    }
}

/**
A frame with a label to show an image.
**/
class ImageViewerFrame extends JFrame
{
    private static final int DEFAUL_WIDTH = 300;
    private static final int DEFAUL_HWIGHT = 400;
    public ImageViewerFrame()
    {
        setSize(DEFAUL_WIDTH, DEFAUL_HEIGHT);
        
        // use a label to display the images
        var label = new JLabel();
        add(label);
        
        // set up the file chooser
        var chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File("."));
        
        // set up the menu bar
        var menuBar = new JMenuBar();
        setMenuBar(menubar);
        
        var menu = new JMenu("File");
        menuBar.add(menu);
        
        var openItem = new JMenuItem("Open");
        menu.add(openItem);
        openItem.addActionListener(event -> {
            int result = chooser.showOpenDialog(null);
            if (result == JFileChooser.APPROVE_OPTION)
            {
                String name = chooser.getSelectedFile().getPath();
                label.setIcon(new ImageIcon(name));
            }
        });
        
        var exitItem = new JMenuItem("Exit");
        menu.add(exitItem);
        exitItem.addActionListener(event -> System.exit(0));
    }
}


  1. EventQueue.invokeLater(() -> {: 使用EventQueue.invokeLater方法确保GUI组件在事件调度线程中被创建和更新。这是为了确保线程安全,因为在Swing中,所有的GUI操作都应该在事件调度线程中进行。
  2. import java.awt.*; 是Java编程语言中的一条导入语句,用于导入Java的抽象窗口工具包(Abstract Window Toolkit,简称AWT)。AWT是Java的一个核心图形用户界面(GUI)工具包,用于创建窗口、按钮、文本框等图形用户界面元素。
  3. import java.io.*; 是Java编程语言中的一条导入语句,用于导入Java的输入/输出(I/O)包,即java.io包。java.io包包含了一系列用于文件和流的类,使得程序能够读取和写入数据。
  4. import javax.swing.*; 是Java编程语言中的一条导入语句,用于导入Java的Swing包。Swing是Java的一个图形用户界面(GUI)工具包,用于创建桌面应用程序的用户界面。
  5. final是Java中的一个关键字,可以用来修饰变量、方法和类。(后面再学一遍,感觉有问题
    • 当final修饰变量时,表示该变量的值是不可变的。具体来说:
      • 如果一个变量被声明为final,则其值只能被赋值一次,一旦赋值后就不能再改变。
      • 对于基本数据类型和引用类型,final变量的初始化值是固定的,不能再被重新赋值。
      • 对于引用类型的变量,final只保证引用的不可变性,而不是引用所指向的对象不可变。也就是说,final变量所指向的对象的内容是可以改变的,但引用本身始终指向同一个对象。
    • 当final修饰方法时,表示该方法不能被子类重写(override)。如果一个方法被声明为final,则子类无法继承该方法,也无法通过重写来实现相同的功能。
    • 当final修饰类时,表示该类不能被继承。如果一个类被声明为final,则其他类不能继承该类,也不能继承其任何成员方法。
  6. var 是许多编程语言中的一个关键字,用于声明一个变量并为其分配一个值。它用于声明变量的类型和初始化值。
  7. 窗口菜单添加:按照JMenuBarJMenuJMenuItem依次添加即可,添加前使用var关键字进行变量创建。

JShell

  1. Java9引入了另一种使用Java的方法,即JShell。他提供了“读取-计算-打印循环”。
  2. 启动JShell:在终端窗口中键入jshell
  3. $1表示这个结果可以用于将来的计算。
  4. tab补全:键入Math.,则会得到在generator变量上调用的Math类的所有方法的一个列表,如果键入Math.l,按tab则会补全为Math.log,从而得到log方法。
jshell> "Core Java".length()
$1 ==> 9
jshell> 5 * $1 -3
$2 ==> 42
jshell> int answer = 6 * 7
answer ==> 42

笔记目录
Java核心技术卷I (11版)第二章学习
Java核心技术卷I (11版)第三章学习(一)
Java核心技术卷I (11版)第三章学习(二)
Java核心技术卷I (11版)第三章学习(三)

  • 35
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值