Java Application基础

Java项目类型

  • Java可以开发多种类型的项目,每种类型的项目都有特定的应用场景
  • Java Application(Java入门程序)是最简单的一种在这里插入图片描述
    在这里插入图片描述
    Java中的标识符
    尽量不要用$打头,在Java中美元符一般用于标识内部类生成的.class 文件
    在这里插入图片描述
    其实并不是只能有一个public class
    如果把一个public class定义在公有类之内也可以,只是不能在公有类之外再在同一个class文件中定义公有类

main方法

Java中的方法多用于完成某个任务并返回结果信息,一个Java应用程序可以包含一个或多个方法
Java应用程序从main方法开始执行

public static void main(String[] args)
//必须严格这样声明
//void表明main方法不返回任何结果
//把void改成int不能编译不能运行
  • 如果JVM找不到main方法会抛出NoSuchMethodError:main异常
  • main方法被一个特定的线程“main”运行,程序会一直运行直到main线程结束或者non-daemon线程终止
  • 当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException ,意味着异常来自于main线程
  • 你可以声明main方法使用java1.5的可变参数的方式如:
    public static void main(String… args)
  • 除了static、void、和public,你可以使用synchronized、和strictfp修饰符在main方法的签名中,如:
    public static final synchronized static void main(String[] args)
  • main方法可以在Java中像其他方法一样被重载,但是JVM只会调用上面这种签名规范的main方法
  • 可以使用throws子句在方法签名中,可以抛出任何checked 和unchecked异常
  • 静态初始化块在JVM调用main方法前被执行,它们在类被JVM加载到内存的时候就被执行了
  • 在static修饰的方法体内不能直接使用非static修饰的成员变量和成员方法
    【为什么Java规定作为程序入口点的main()方法是静态的?】
    static方法是存储在静态存储区的,可以直接用类名调用,不需要进行实例化,如果不用static,则调用之前必须要实例化,而main是程序的入口程序从这开始,不可能在这之前对main进行实例化,所以使用static可以更方便的直接用类.main()对其调用。
    在C/C++中main方法不是属于某个类的,是一个全局的方法,当运行的时候,就能很容易的找到main方法并执行,但Java不一样,Java都是以类组织在一起的,当我们运行某个程序的时候,我们并不知道这个main方法放在哪个类中,也不知道是否要产生一个类的对象,而定义为static之后,在我们执行一个Java代码的时候,比如输入 java Test ,编译器就自动到Test类中去寻找Test类的方法,而不产生Test类的对象
    【为什么Java规定作为程序入口点的main()方法是public的?】
    因为main方法是公共的,JVM就可以轻松的访问执行它。
    【为什么main方法没有返回值?】
    因为main返回任何值对程序都没有任何意义。

实例一

Java Application中的输出语句

System.out.println("welcome to java programming!");
  • System.out println 打印一个字串
  • Java中的字串----由双引号包围的一系列字符
  • 字符串中的空白符会被编译器保留
  • system是类名,out是这个类的一个字段,system.out 引用Java所提供的“标准输出对象”,println是这一对象所拥有的方法,其功能是——在命令提示符窗口中输出内容
    在这里插入图片描述
    在这里插入图片描述

实例二:在一个对话框中显示文本

在这里插入图片描述
在这里插入图片描述
显示的是这个东东!

写的时候出现了一个问题就是显示莫得这个javax这个包
解决方案
在module-info(你的包里的最下面)的
module ***{
requires java.desktop;requires javafx.graphics; //添加这个【其实点击左侧的红点点然后选择就好】
}

  • 大多数Java应用程序使用窗口或对话框
  • JOptionPane类允许我们使用对话框来显示一些信息

Package(包)

  • 相关的类被放在一起,成为“package”
  • JDK预置的所有的包构成“Java标准类库”或“Java应用程序编程接口(Java API)
  • JOptionPane在包javax.swing中,此包中有一些可用于”图形界面GUI(Graphical User Interfaces)设计“的类
Java SE API中的2种包
  • 核心包(core packages):以“java”开头,由JDK之内提供
  • 扩展包(extension packages):以“javax“开头
  • 第三方包:通常以”反写“的公司网址开头,这是一种约定,并非强制性的。比如package名为:com.example,它实际上代表一家公司,其网址通常为:http://www.example.com
package的使用
  • 使用某类前,需要用import语句来导入它所在的包
import javax.swing.JOptionPane;

import语句供编译器用来识别和定位Java程序中用到的类;上述语句告诉编译器在javax.swing包中装入类JOptionPane 的定义,这样在源程序代码中就可以使用它了。

使用对话框
JOptionPane.showMessageBialog(null,"welcome\nto\njava\nprogramming!");
  • 调用类JOptionPane的showMessageDialog方法显示消息框
  • 注意方法名开头字母小写,与类名的要求不同
  • showMessageDialog是一个静态(static)方法
  • 静态方法用”类名.方法名(参数列表)“的形式调用
结束应用程序
System.exit(0);
  • 调用静态类System的静态方法exit结束程序
  • 参数0表明程序顺利结束,非0表示有❌发生
  • 类System属于包java.lang,这是一个核心包,自动被每个Java程序所引入,不需哟import语句就可以直接使用
  • System.exit()可用于运行停机钩在节目退出之前。在大型程序中,这是一种处理关闭的方便方法,因为程序的所有部分都不能(也不应该)相互了解。然后,如果有人想退出,他可以打电话System.exit(),关机挂钩(如果设置正确的话)负责执行所有必要的关闭仪式,如关闭文件、释放资源等。
    “此方法永远不会正常返回。”这意味着该方法不会返回;一旦线程到达那里,它就不会返回。
    另一种可能更常见的退出程序的方法是简单地到达main方法。但是,如果有任何非守护进程线程正在运行,它们将不会被关闭,因此JVM不会退出。因此,如果您有任何这样的非守护进程线程,则需要一些其他方法(关闭钩子除外)来关闭所有非守护进程线程并释放其他资源。如果没有其他非守护进程线程,则从main将关闭JVM并调用关机挂钩。
    出于某种原因,关闭钩子似乎是一种被低估和误解的机制,人们正在用各种专有的自定义黑客重新发明轮子,以退出他们的程序
-  public static void exit(int status) {
       Runtime.getRuntime().exit(status);
}
 /*他是System类的一个静态方法,作用是是关掉jvm,status参数是状态参数,0是正常关闭!其他非0为非正常关闭。
 在异常里可传递其他非0参数关闭JVM,如:*/
 try{
   //TODO
}catch(Exception e){
    System.exit(1);// abnormal termination.
}

dispose():关闭当前程序,释放资源。而exit不释放内存资源。

实例三:JavaAppArguments.java

  • main方法参数是一个字串数组,代表命令行接收的参数,一下代码提取出所有参数并列出其值:

在这里插入图片描述

  • 指定命令行参数
    在run as选项中,有一个Run Configurations…里面的Arguments可以进行命令行参数的选择

在这里插入图片描述

  • 在终端执行Java步骤
vim helloworld.java//新建一个Java文件,然后可以在vim编辑器里对helloworld进行编写
javac helloworld.java//将.java编译为.class字节码文件
java helloworld//注意这里不要带.java
java class名 参数1 参数2 //要传入的命令行参数之间要用空格隔开
  • 上题代码
public class helloworld
{
public static void main(String[] args)
{
System.out.println("hello world!");
int sum=0;
for(String arg:args)
{
sum=sum+Integer.parseInt(arg);
}
System.out.println("sum="+sum);
System.out.println("参数个数="+args.length);
//System.out.println(arg);
}
}

关于String字符转换成可计算数字要调用Integer类中的静态方法Integer.parseInt(String[] str);
⚠️思考问题的时候本题是把String转换成Int,在String类中常用的没找到,考虑能不能在Integer类中找到

String和int互转的方法
  • String转换成int(2种)
int i = Integer.parseInt(String);
int i = Integer.valueOf(String).IntValue();
  • int转换成String(3种)
String str = String.ValueOf(i);
String str = String.toString(i);
String str = ""+i;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值