`

Java学习系列(六)Java面向对象之Jar命令、正则表达式、国际化详解

 
阅读更多

首先向大家道个歉,前面3天由于在忙着写项目说明文档,所以耽误了一下。今天借着中午这段时间把前面的补回来。话不多说,下面步入正题吧!

Jar命令:jar可以把多个文件打包成一个压缩包,得到的压缩包通常有3种:1)*.jar -它里面包含N个class文件。2)*.war(Web) -它是一个Web应用打包生成的包。3)*.ear(Enterprise) -它是一个企业应用打包生成的包。这里我们学习时常用的*.jar这种方法。在运行命令窗口输入jar我们可以看到jar命令的如下参数选项:

举例说明几个常用的:

命令:jar -cvf test.jar *.class //为新创建的jar包取名为test
jar -cMf test.jar *.class //创建压缩包,不生成清单文件(META-INF下面的manifest.mf文件)
jar -tvf test.jar //查看压缩包
jar -xvf test.jar //解压 (加v可以看到详细的过程,可不加)
jar -uvf test.jar A.class //添加A.class到test.jar中。
【打包成可执行的JAR包】jar -cvfe my.jar UserTest *.class //通过-e告诉JVM UserTest为主类,并打包。
这样如果机器上安装了独立的虚拟机,只要双击“可执行型”的JAR包即可运行。
如果没装则:java -jar my.jar //运行
javaw -jar my.jar //主要用于有界面的程序(javaw和java差不多)
若不需要清单文件,可以使用windows里的WinRAR或WinZi压缩,然后把后缀改成.jar即可。

Jar命令的好处:方便管理。JVM可以直接加载Jar包,这样就可以一次加载N个类,效率更高。

Java程序入口(main)方法说明:public -系统来调用该方法时,不可能在同一个包中,也不会是它的子类
static -无需创建实例,直接用类名调用入口方法。--执行:java 主类类名 数组元素1 数组元素2...
String[] args:args默认是长度为0的数组,可在程序运行时动态传入args参数值。

正则表达式:就是一个可以匹配N个字符串的字符串模板。

正则表达式所支持的通配符:
. -可以匹配任意字符。
\s -代表一个任意空白(空格、Tab)
\S -代表一个任意的非空白
\d -代表一个任意的数字(digital)
\D -代表一个任意的非数字
\w -代表一个单词字符
-W -代表一个任意的非单词字符
str.matches(regex);//判断str字符串是否匹配给定的正则表达式。
"123.123".replaceAll("\\.", "#"); //结果:123#123
特殊字符(实际用时记住要转义\):( ) [ ] { } \ ? * + ^(一行的开头) $(一行的结尾)|
表示出现次数的“副词”:
? --代表它前面的东西可以出现0~1次
* --代表它前面的东西可以出现0~N次
+ --代表它前面的东西可以出现1~N次
{n,m} --代表它前面的东西可以出现n~m次
{n,} --代表它前面的东西至少出现n次
{,m} --代表它前面的东西最多出现m次
{n} --代表它前面的东西必须出现n次
方括号表达式:
枚举:[ab中] --代表a或x或者“中”。
范围:[a-c] --代表a,b,c中的任意一个字符。
枚举与范围:[a-c1-3]--代表a,b,c,1,2,3中的任意一个字符。
表示求否:[^a-c] --代表不含a,b,c其中任意一个字符。
表示求交:[a-g&&[^b-d]]:--代表a,e,f,g中的任意一个字符。--总结:一个字符用\,多个字符用[],字符次数用{}
(com|org|cn):表示必须含有其中之一。
--除此自外,Java专门提供了两个工具类:
Pattern - 它就是代表正则表达式模板。
Matcher -代表一个匹配工具类。
find():查找下一个匹配正则表达式的字符串。group()取出上一次与正则表达式匹配的字串。

举例说明(找出邮箱):

 

public class RegexTest {
	public static void main(String[] args) {
		String str ="这本书价格是52.9元,作者的两个邮箱:一个是123@qq.com,另外一个是234@163.com";
		Pattern pattern = Pattern.compile("[a-zA-Z0-9]{2,}@[a-zA-Z0-9]{2,}\\.(com|org|net|cn)");
		Matcher matcher = pattern.matcher(str);
		while(matcher.find()){
			System.out.println(matcher.group());
		}
	}
}

国际化(简称:i18N):希望一个程序,可以“自适应”所有用户环境。--本质是“查找”、“替换”。

 

国际化的步骤:
(1)提供资源文件,负责为程序提供国际化消息,同时资源文件的文件名必须满足:<baseName>_语言代码_国家代码.properties。如果资源文件包含了非西欧字符,需要使用native2ascii工具类处理这个文件。

处理格式:native2ascii 要处理的文件 生成的新文件名(资源文件)。
(2)使用ResourceBundle来加载国际化资源文件
(3)从所加载的文件中查找key对应的字符串进行替换。
--调用ResourceBundle的getMessage()方法(负责为消息中的占位符填充参数值)输出国际化消息。

举例说明1:

 

/*
 * Description:获取Java语言的所支持的所有Locale
 * */
public class LocaleTest {
	public static void main(String[] args) {
		Locale[] locals = Locale.getAvailableLocales();
		for (Locale ls : locals) {
			System.out.println(ls.getDisplayCountry() + "   "
					+ ls.getLanguage() + "   " + ls.getCountry());
		}
	}
}

举例说明2:
1)我们写一个test.properties文件,内容为:hi=你好!welcome={0},欢迎你!2)执行命令行:native2ascii test.properties test_zh_CN.properties

 

我们将看到生成的内容如下:hi=\u4f60\u597d\uff01
welcome={0},\u6b22\u8fce\u4f60\uff01

3)编码如下:

/*
 * Description:获取并替换国际化资源文件信息
 * */
public class LocaleTest {
	public static void main(String[] args) {
		// Java 虚拟机实例的当前默认语言环境值
		Locale currentLocale = Locale.getDefault();
		// 加载国际化资源文件,test为资源文件名前缀
		ResourceBundle bundle = ResourceBundle.getBundle("test",currentLocale);
		 // 从bundle所加载的文件中查找hi对应的字符串进行替换。
		System.out.println(bundle.getString("hi"));
		//将占位符的内容替换为“张三"
		System.out.println(MessageFormat.format(bundle.getString("welcome"), "张三"));
	}
}

结束语:

 

今天内容就讲这么多,明天开始学习Java面向对象之集合框架。内容比较多,所以打算分两次讲。



 

 

分享到:
评论

相关推荐

    Java基础教程完整版

    Java学习系列(六):Java面向对象之Jar命令、正则表达式、国际化详解 本章节主要讲解Java面向对象的其他概念,包括Jar命令、正则表达式、国际化。Jar命令是一种用于压缩和解压缩Java类库的命令。正则表达式是一种...

    JavaSE基础教程

    6. **Java的Jar命令、正则表达式、国际化**:介绍了如何打包Java应用为jar文件,正则表达式的使用,以及如何实现多语言支持。 7. **集合框架详解**:详细分析了ArrayList、LinkedList、HashSet、HashMap等各种集合...

    Java C# 语法 比较

    Java和C#是当今流行的两种面向对象的编程语言,它们都源自C语言的语法风格,但各自发展出了独特的特性。以下是对Java和C#之间语法规范的详细比较: 1. 编译及启动程序 - Java使用`javac`进行编译,C#使用`csc`。 ...

    Java程序员必备技能

    - **java.util**:掌握集合框架、日期时间处理类、正则表达式等。 - **java.io**:理解输入输出流的工作原理,熟悉File、InputStream、OutputStream等类。 - **java.math**:掌握BigInteger、BigDecimal等数学计算...

    Java工程师必知必会.docx

    1. 掌握Java核心语法、深入理解面向对象思想、熟练使用Java语言的核心API 2. 掌握Oracle数据库的安装、配置 3. 掌握SQL、PL/SQL数据库编程的核心内容 4. 掌握JDBC的核心API、能编写出健壮的JDBC程序 5. 掌握DBUtils...

    疯狂JAVA讲义

    2.3 Java的面向对象特征 36 2.3.1 一切都是对象 37 2.3.2 类和对象 37 2.4 本章小结 37 第3章 数据类型和运算符 38 3.1 注释 39 3.1.1 单行注释和多行注释 39 3.1.2 文档注释 40 学生提问:API文档是什么? ...

    基于java语言开发的电子词典

    在Java中,可以利用正则表达式、Trie树等数据结构来提高查询速度。对于多语言支持,还需要考虑字符编码和Unicode处理。 5. **用户交互** 良好的用户体验是电子词典成功的关键。Java提供了丰富的UI组件,如文本框、...

    java入门教程

    ### Java 入门教程知识点详解 ...通过以上详细介绍,我们不仅了解了 Java 的基本概念、环境配置,还深入学习了 Java 的语法结构、流程控制、面向对象等核心内容,这将为后续更深入的学习奠定坚实的基础。

    一个Java程序员应该掌握的10项技能

    - **java.util**:熟悉集合框架、正则表达式、Zip处理、日期时间处理等。 - **java.io**:理解I/O流的概念,熟悉File、InputStream、OutputStream等类的使用。 - **java.math**:掌握BigInteger、BigDecimal等数学...

    SSH 中jar包说明

    ### SSH中的Jar包详解 SSH(Struts+Spring+Hibernate)是Java Web开发中非常流行的轻量级框架组合。为了更好地理解和使用SSH框架,我们有必要深入解析这些框架中所涉及的关键Jar包及其功能。 #### 1. **antlr-2.76...

    掌握Java的基本要素

    面向对象编程(OOP)是Java的核心思想之一。理解和实践封装、继承、多态等原则,是编写高质量Java程序的关键。 #### 十、规范 遵守良好的编码规范有助于提高代码的可读性和可维护性。这包括但不限于命名约定、注释...

    一个用java编写的通讯录

    总之,这个用Java编写的通讯录系统展示了如何利用Java的GUI库、文件操作、数据结构和面向对象编程等技术,实现一个实用的桌面应用。通过深入理解这些知识点,开发者不仅可以构建自己的通讯录系统,还能为其他类型的...

    Java相关

    - **java.util**:熟悉List、Set、Map等集合框架,以及正则表达式、压缩、日期时间处理、随机数生成等工具类。 - **java.io**:理解输入输出流的概念,熟练使用File、BufferedReader/Writer、InputStream/...

    笔记本.Java(含带搜索功能)

    描述中的"该笔记本采用Java语言"说明了该应用的开发环境和编程基础,Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性著称,适用于桌面应用、服务器端应用以及移动应用等多个领域。...

    SSH三大框架 整合必备jar包

    - **jakarta-oro.jar**: 提供Perl兼容的正则表达式引擎,用于Struts中的表单验证等场景。 - **struts.jar**: Struts核心库,包含了实现MVC模式所需的组件。 - **antlr.jar**: 解析器生成工具,用于Struts的Action...

    UnLinker:编译原理第二周作业,网址匹配

    Java作为一种广泛使用的面向对象的编程语言,提供了丰富的库和工具来支持正则表达式处理和解析器构造。例如,Java的`java.util.regex`包包含了正则表达式的操作类,如`Pattern`和`Matcher`,它们可以帮助我们方便地...

    传智播客视频JavaSE学习笔记

    以上是根据传智播客视频JavaSE学习笔记总结的关键知识点,覆盖了Java基础环境配置、字符串操作、多线程编程、集合框架、输入输出流、网络编程、反射机制、正则表达式等多个方面,希望对Java初学者和进阶者有所帮助。

    java面试题(整理)

    ### Java面试题详解 #### 一、Java基础知识 1. **您看过哪些Java方面的书籍?** 这个问题旨在了解求职者对于Java学习的态度和深度。常见的Java学习书籍包括但不限于: - 《Java核心技术》 - 《Effective Java...

    javase基础笔记总结全套.docx

    Java是一种广泛使用的面向对象的编程语言,具有丰富的库和跨平台的特性。以下是对标题“javase基础笔记总结全套.docx”中提到的一些关键知识点的详细解释: 1. **JDK(Java Developer Kit)**:Java开发工具集,...

Global site tag (gtag.js) - Google Analytics