我们知道,在C程序中,主入口函数(通常大家叫主函数,就是main()函数)可以获取系统传递给程序的参数,其主函数的定义形式如下:

#include <stdio.h>int main(int argc;char* argv[])
{statement;

    return 0;
}

  在C中,main函数的形式参数: argv指针数组存储的是传递的参数的指针,argc存储的是主函数获取的参数的个数,即argc存储的是数组argv的index

大小,并且argv[0]存储的是可执行程序的文件名(这个包括路径?嘻嘻,这里卖个关子)。

  那么在Java中是否具有这样的机制呢?

【Java的命令行参数】

  Java的入口函数main也提供了C语言一样的机制,我们来看入口函数的main的定义:

/**/public class class_name
{public static void main(String args[]){statements;}
}      

  可以看到,main函数也存在形式参数:String args[]

  这里,系统传递给Java程序的参数就是存储在形式参数  args[] 中,大家可以看到Java中的形式参数没有:argc count项? 这是为什么呢?

/*
本程序代码测试For Each语句 和命令行参数
*/public class ForEach
{public static void main(String[] args){//测试for each语句和main函数的参数//for(String getmain:args)//System.out.println(getmain);for(int i=0;i<args.length;i++) System.out.println(args[i]);}
}

  程序的执行结果如下:

  通过程序我们看到,Java的main函数确实接受了系统传递过来的参数,并且没有存储Java程序的名称。同时我们可以看到不需要

argc count计数也能完整的输出输入的参数;这就是Java与C语言main函数之间的差别。

【Java For Each循环】

  如果接触过VB,那么大家一定会熟悉VB结构中提供的For Each循环结构;同样在Java中在SDK 5.0 以后的版本也提供了这样一个循环结构。

通过For Each循环可以处理具有集合特性的数据,例如可以处理数组、对象集合等。其语法结构是:

  for(Object object_var:Object Set)  statement;

对于集合Object Set中的每一个对象object_var,执行statement。

  我们可以测试一下这个语句:

/*
本程序代码测试For Each语句 和命令行参数
*/public class ForEach
{public static void main(String[] args){//测试for each语句和main函数的参数for(String getmain:args)System.out.println(getmain);//for(int i=0;i<args.length;i++) //System.out.println(args[i]);}
}

  程序的执行结果如下所示:

  可以看到上面的输出结果和用for循环驱动是一致的。

【Java 程序执行的返回值】

  可以看到,Java程序的入口函数定义为void型,就是不返回任何值,但是有时候我们需要返回值那么怎么办呢?我们是否可以和C中一样

将Java的入口函数定义为int型(或者是其他返回类型呢)?

  遗憾的是,Java程序的main函数必须定义为void类型,那么我们是否不能有返回值给系统了呢?

  Java虽然没有提供入口函数的return机制,但是提供的System类的方法可以说实现这个目的。语法如下:

     System.exit(x);  //通过这个方法实现返回值到系统。

  具体的实例就不做了。

【Java 字符串类型】

  字符串:在Java中字符串是Unicode字符序列。和C语言类似,Java没有内置标准的数据类型来表示字符串,而是通过在标准库中

提供一个“预定义的类”来提供对字符串处理的支持;这个类就是:String

   根据OOP的思想,任何一个字符串都可以认为是String类的实例Instance。而在Java中沿袭了C/C++体系的习惯,在Java中用

双引号来表示字符串。

Exp:

  “abcde”;//Java字符串

String EmptyStr="";  //空字符串

  String  Greeting=“Hello world”;//字符串“Hello world”

1、子串

  从字符串提取的一个小字符串就是一个子串,包括字符串本身;这通过String提供的substring方法来实现。

  其语法是:

  object.substring(index_start,index_end);

  由于字符串引用索引是从index_start可以0开始,且index_end是第一个不需要提取的字符,因此[index_start,index_end)是左闭右开区间,

因此这里需要注意 。

  提取的子串的长度为: index_end - start_index.

Exp:

  String greeting="Hello world";

String sub_greeting=greetring.substring(0,5);

String sub_sub_greeting=sub_greeting.substring(1,3);

这样我们的子串sub_greeting就是“Hello”;而sub_sub_greeting则是“el”;

/*
本程序测试字符串String类
*/public class string
{public static void main(String args[]){String greeting="Hello world!";String sub_greeting=greeting.substring(0,5);String sub_sub_greeting=sub_greeting.substring(1,3);System.out.println(sub_greeting);System.out.println(sub_sub_greeting);System.exit(0);}
}

执行结果如下:

2、字符串的拼接

  我们知道在C++中,通过运算符重载的功能,将 + 重载提供字符串拼接运算,那么在Java中是否具有这样的机制呢?

  Java中不具有运算符重载机制,但是我们依然可以通过 + 运算符连接两个字符串。

Exp:

  String string_link="hello" +" " + "world!";

  这里: string_link 将表示: “hello world!” 这个字符串。

3、字符串的不可改变性

  接触过C/C++的对字符串的操作可能在这里会引起部分误解,我们知道如下:

Exp:   *.c

  char p[]="abcdefg";

p[1]='x' ; //是可以通过这样的方式来改变字符串的内容的。实际上并没有改变“abcdefg”的内容,而是改不了变量p[1]的内容。

  而在Java中不能通过这这机制来改变String对象中的内容;因为String 对象更像一个引用,而不是数组变量。  

Exp: *.java

  String  str="abc";

str[1]='x'; //这种语法是错误的,Java的String类是不可改变指向的内容; 这类似于C/C++中的 char *p=“abcd”一样;不能通过p[1]

//改变“abcd”的内容一样。

  如果需要改变字符串的内容,则可以通过Stringbuffer类实现。

4、检测字符串是否相等

  有时候需要检测字符串是否相等,那么我们怎么检测两个字符串是否相等呢?

  在String类中提供了一个方法来实现这个功能:object.equals(String obj);

  如果测试的object对象和obj对象相等则返回true;否则返回false。

Exp:

  String   str="Hello";

str.equals("Hello"); //这里返回true。 当然也可以这样测试  “Hello”.equals(str);  同样返回true。

  需要说明的是,equals方法使大小写敏感的,就是说  “Hello”.equals("hello"); 返回的是false。

  如果需要不区分大小小,则可以使用equalsIgnoreCase 方法来测试。

Exp:

  "Hello".equalsIgnoreCase("hello"); //返回值为true;

  注意:

    不能用 == 符号来测试两个字符串String对象是否相等,虽然有时候 == 确实能进行比较。== 的用途是用来比较两个字符串

的存储位置是否一致,如果一致则运算结果是true,否则为false。

    == 运算符可以用来检测共享字符串是否相等,子串串常量是共享的,而 + 或substring方法得到的字符串均不是共享的。

5、字符串存储空间和字符串长度(即代码点和代码单元)

  我们知道Java中字符是采用Unicode编码的,这样字符串存储的空间就比char类型多了一倍。

  通常可以这样认为: 代码点计数 就是 字符串的存储空间计数; 而代码单元计数就是字符串长度(即字符个数)计数。可以通过下面

的方法获取字符串长度:

  int  str_length="hello world".length();

而如果需要获取代码点计数则需要通过下面的方法:codePointCount(start_index,end_index);

Exp:  获取字符串“hello world”的存储空间大小。

  int cp_str="Hello world".codePointCount(0,"Hello world".length());

  

  有时候需要获取字符串指定位置index的代码单元的内容,我们可以通过:charAt(index);方法; 因为String的index是从0开始计数的

所以    0<= index < object.length-1 .

Exp: 获取字符串“hello world" 的第四个字符

   char  four_in_str="hello world"。charAt(4-1);  //这样four_in_str存储的就是字符'l'

6、 Java的String类的API接口

  Java提供了很多的String类的API接口函数,这些函数用来处理字符串将非常容易,具体就不说了,太多了。

【小结】

  到这里,书第三章基本已经看完了,接下来的事情就是第四章了,粗略的看了一下,第四章主要是介绍OOP的内容。

  哎, 学习进度有点慢啊, 这个还真需要时间啊。

【Java】_2_Java程序入门第五课相关推荐

  1. 【Java】_2_Java程序入门第六课

    不知道是ESET的问题,还是开发商的问题,我在千千静听官网下载的播放器.百度下载的百度影音和优酷下载的iKu软件,结果 都被ESET报潜在威胁,这软件编写的让人蛋疼,不知道杀软和应用软件什么时候才能正 ...

  2. 【Java】_2_Java程序入门第七课

    好久没来园子了,春节刚过完,现在面对大家最想说的一句话是:你相亲了吗? 都说:孤独的男人玩dota,寂寞的女人穿丝袜. 我想现在这个时代屌丝才会天天上QQ.逛校内.跑猫扑.走天涯,没事发几句牢骚, 没 ...

  3. C# 编程入门第五课,VS2019程序调试,for循环,水仙花数,Console.Write,又一种类型变换,三元表达式,产生随机数

    C# 编程入门第五课 文章目录 C# 编程入门第五课 1. VS2019程序调试 2. for循环 3. 水仙花数 4. Console.Write() 5. 又一种类型变换 6. 三元表达式 7.产 ...

  4. 以二进制输出64位类型的数据_Java入门第五课:Java基本数据类型与变量的声明...

    数据类型 基本数据类型 Java有八种基本类型.六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,一种布尔型. Byte.short.int.long ...

  5. 打开程序时固定位置_新手入门第五课:免费开源图像处理程序GIMP之矩形选择工具...

    GIMP是一款图像处理软件,是跟Photoshop同一类型的软件,为了方便介绍,后面每篇相关GIMP图像处理软件的介绍文章的开头,我都将插入一段文字,用于介绍GIMP是什么,让不熟悉的朋友知道这是干什 ...

  6. 数独基本规则_思维训练|数独入门第五课:唯余解法

    大家好,我们每周一次的数独课又来了. 本期,我们会介绍唯余解法: 唯余解法的原理十分简单,但是在实际的解题中,非常不容易辨认. 由于唯余解非常不容易辨认,所以一般的报章杂志及较大众化的数独网站,通常会 ...

  7. Spring入门第五课

    集合属性 在Spring中可以通过一组内置的xml标签(如:<list>,<set>,<map>)来配置集合属性. 配置java.util.List类型的属性,需要 ...

  8. 八边形点坐标数的lisp_图形学入门第五课:齐次坐标

    齐次坐标(Homegeneous Coordinates) 在学习齐次坐标之前,我们要先好奇的问一下,为什么要学习齐次坐标.上一节课,我们学习了变换的三种基本形式:旋转,缩放,和切变.但是还有一种特殊 ...

  9. Flash鼠绘入门第五课:绘制可口的樱桃-Flash鼠绘可口的樱桃(1)

    本课教学内容:Flash鼠绘水果 本课教学目的:进一步了解和掌握工具的使用方法,熟悉渐变色的使用及一些菜单下功能的运用. 在日常生活中,人们都离不开水果,而且对它们有一种特殊的喜爱和需要.那么,我们就 ...

最新文章

  1. SpringBoot使用教程【1】Restful API设计 返回json,xml格式...
  2. pid控制从入门到精通pdf_【应用指南】PID调节让流量/压力控制又快又稳
  3. 程序基本功之遍历二叉树
  4. JZOJ 5700. 【gdoi2018 day1】小学生图论题(graph)
  5. 使用Github(仓库管理)
  6. bytecode java_Java 字节码解读
  7. Three.js制作360度全景图
  8. 调用未知DLL中的导出函数[转]
  9. Linux基本命令之seq
  10. HTML5 本地存储之IndexedDB封装及最详细教程
  11. 做软件测试三,四年后的感想
  12. 【面试】阿里巴巴Java经典面试题整理及答案详解
  13. 融云首席科学家任杰:写在融云 8 周年
  14. Thingworx自定义扩展开发(一)- 开发环境搭建、Extension Demo Coding
  15. 华为认证是什么?这个证值得考吗?网工深思……
  16. 如何使用Adobe Acrobat对PDF文档进行电子签名
  17. 1033,2052 是什么意思?
  18. 【DirectX11】【学习笔记(10)】混合
  19. 【漏洞复现-骑士cms-代码执行】vulfocus/骑士cms_cve_2020_35339
  20. java找中点_java中点是什么意思

热门文章

  1. 考研总分多少能去辽师_辽宁师范大学在职研究生统考分数到达到多少呢统考通过就会被录取吗...
  2. 海归计算机专业简历怎么写,海归硕士求职简历该怎么写?
  3. android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
  4. 报错,sql语句中尽量不要使用*,只查询需要的字段出来
  5. Eclipse 常用快捷键及使用技巧!
  6. 9.Java 面试题整理(UML 方面 )
  7. Go程序:演示数组切片用法
  8. 【BZOJ1057】【codevs1428】棋盘制作,悬线法
  9. java 进程 cpu占用_JAVA进程CPU占用高的故障排查 – 运维那些事
  10. 2017.5.7 过河 失败总结