java求生第六集

字符类型

1.介绍了一种新的变量类型,char:单个的字符类型,比如:char c=‘a’,用单引号表示定义的单个字符变量的字面量(注意:java使用unicode来表示字符,在unicode表中,每一个字符对应一个整数编号)
【实例1】单引号里可以是字母、数字、汉字等等,输出是:a
在这里插入图片描述
2.当char类型的单个字符变量与整数进行加减运算(比如加1,减1等等),则运算的实质是,用字符在unicode表中对应的整数编号来与整数进行加减运算,得到新的整数编号,输出则为新的整数编号在unicode表中对应的字符。
【实例2】输出是:B
在这里插入图片描述
3.两个char类型的单个字符变量,进行加减运算,则运算的实质是,用两个字符各自在unicode表中对应的整数编号来进行加减运算,得到的是一个整数结果,输出的也是这个整数结果。
【实例3】输出是:3
在这里插入图片描述
4.定义了一个char类型的单个字符变量c,当我们用int强制类型转换输出这个变量c时,我们输出的是c字符在unicode表中对应的整数编号。
【实例4】输出是:65
在这里插入图片描述
5.给char类型单个字符变量赋值的时候,单引号下的字面量格式可以换成\uxxxx的形式,\u表示是unicode字符表,xxxx是四位16进制数,转换成10进制后就是表中的整数编号,则相当于字面量就是这个整数编号对应的字符。
【实例5】输出为:A
在这里插入图片描述
6.给char类型单个字符变量赋值的时候,若直接赋整数,则这个整数就相当于unicode表中的整数编号,则就相当于对应的字符。
【实例6】输出为:A
在这里插入图片描述
7.大写字母换成小写(或者小写换大写)
注意:一般来说在unicode表中,小写字母对应的整数编号大于大写字母
【实例7】大换小,要注意有一次char类型的强制类型转换,输出为:a
在这里插入图片描述
【实例8】小换大,要注意有一次char类型的强制类型转换,输出为:A
在这里插入图片描述
8.两个char类型的单个字符变量,是可以比较大小的,实则是在比较两个字符在unicode表中对应的整数编号的大小。
【实例9】输出为:false
在这里插入图片描述

逃逸字符

在这里插入图片描述
1)\b是回退一格的意思,不是说把前面一格删掉,而是下次再输入是从回退的那一格开始显示。也就是说如果后面有输入则会把前面一格替换掉,后面没有新的输入,则不会有任何变化。(在eclipse里运行时console会忽略这个\b,必须得eclipse以外去显示)
2)\t是使得输出从下一个表格位开始:
在这里插入图片描述
输出是:(这里的123是对齐的)
在这里插入图片描述
3)回车和换行是两个动作
注意:这些逃逸字符用在单引号或者双引号下都行,单引号下面是单个字符的字面量,而双引号下面是字符串的字面量。

包裹类型

1.我们已经学习了四种基本类型,boolean、char、int、double,每种基础类型都对应着一种包裹类型如下所示:
在这里插入图片描述
那么包裹类型有什么作用呢?
1)包裹类型也是一种类型,可以用来定义变量(当成普通的数据类型来使用);
2)能通过包裹类型,实现一些特殊的功能,得到一些特殊的信息:
【实例1】得到整数包裹类型的最大值输出为2147483647
在这里插入图片描述
注意:这个前面解释过了,整数在java中用4个byte来表示,最小到最大为[-231,231-1];这里的“.”是一个运算符,点的左边是一个对象或者类,点的右边是该对象或者类提供给我们的服务、数据、或者能做的一些动作;

【实例2】判断字符是不是数字
在这里插入图片描述
【实例3】判断某个字符是不是小写
在这里插入图片描述
【实例4】转换大写字母为小写
在这里插入图片描述
注意:包裹类型提供的一些小功能,可以帮助我们做很多事情!

2.Math是java系统中的一个类,刚刚也说了可以放到“.”的左边,可以提供一些基本的数学操作:Math.abs(表达式)可以帮我们算绝对值,Math.pow()可以帮我们算幂次,Math.random()可以生成随机数,Math.round()可以帮助我们四舍五入;
【实例5】上面几项功能的实现
在这里插入图片描述
注意:这里的round四舍五入是只保留整数的四舍五入;Math.random()默认生成的是(0,1)的数;pow算幂次,可以算浮点的幂次,比如这里的23.2这种操作就叫做函数!

字符串

1.**单引号下面是单个字符的字面量,而双引号下面是字符串的字面量(正式定义:用双引号括起来的0个或多个字符就是一个字符串的字面量)。**上面说的逃逸字符,既可以当成单个字符也可以当成字符串,都可以使用。
2.引入String类型的字符串变量,注意这里的S是大写,表明其不是一个基础类型,而是系统类库中的一个类(类似于之前的包裹类型)。
3.特别需要注意的是:
在这里插入图片描述
所以String类型的字符串变量的定义和赋值没有和基础类型不同,却类似于数组的变量定义和赋值,格式如下:
在这里插入图片描述
当然也有简单的直接赋值发方法:
在这里插入图片描述
4.“+”的连接作用,前面已经涉及到了,要注意前后和括号对运算的影响:
在这里插入图片描述
5.关于读入:输入“This is a test.” ,next只会输出“This”,nextLine会输出所有“This is a test.”。
在这里插入图片描述
6.则现在对String类型的字符串变量赋值可以有三种方式,第一种用new创建(相当于数组变量的动态初始化)格式为:“ String s=new String(“abc”); ”,第二种是简化版的(相当于数组变量的静态初始化)格式为:“ String s=“abc”; ”,第三种是通过输入来赋值;下面要用到这三种定义和赋值方式进行分析;
7.**有两个String类型的字符串变量, a和 b,如果让b=a,这里不表示赋值,而是对角落那个字符串管理权的赋予,此时a和b两个字符串变量对角落的字符串具有相同的管理权。**有了这个概念之后,我们要了解的是两个字符串变量用“==”号来比较,则是判断他们是否是对同一个字符串进行管理,是否指向同一个对象,如果是则为true,如果不是则为false,这里是对管理权的判断,而非对字符串内容的判断,如下两个程序所示:

【实例1】 第一种方式定义两个字符串变量(相当于数组的动态初始化),new出的两个字符串变量就算内容相同,也是指向不同的对象,不是对相同的对象据有管理权,如图所示输出为false,当然,内容不同就更是false了。
在这里插入图片描述
【实例2】用第一种方式定义了一个String类型的字符串变量,再定义一个空白的字符串变量,加上管理权赋予的式子,如图所示输出为true
在这里插入图片描述
【实例3】用第二种方式定义两个字符串变量(相当于数组的静态初始化),只要定义的两个字符串变量内容相同,那么他们就是指向同一个对象,具有相同的管理权,如图所示输出为true,当然内容如果不同肯定为false。
在这里插入图片描述
【实例4】用第二种方式定义了一个String类型的字符串变量,再定义一个空白的字符串变量,加上管理权赋予的式子,如图所示输出为true
在这里插入图片描述
【实例5】第三种方式定义并给两个字符串变量输入赋值,就算输入的内容相同,也是指向不同的对象,不是对相同的对象据有管理权,如图所示输出为false,当然输入的内容不同,就更是false了;
在这里插入图片描述
【实例6】用第三种方式定义并给一个String类型的字符串变量输入赋值,再定义一个空白的字符串变量,加上管理权赋予的式子,如图所示输出为true
在这里插入图片描述
【实例7】第一种方式new出一个字符串变量,和点三种方式定义输入赋值得到的字符串变量,就算是内容相同,也不是指向同一个对象,如图所示输出为false,当然,内容不同就更是false了。
在这里插入图片描述
【实例8】第二种方式定义静态初始化了一个字符串变量,和第三种方式定义输入赋值得到的字符串变量,就算是内容相同,也不是指向同一个对象,如图所示输出为false,当然,内容不同就更是false了。
在这里插入图片描述
【实例9】第一种方式new出一个字符串变量,和第二种方式定义静态初始化赋值得到的字符串变量,就算是内容相同,也不是指向同一个对象,如图所示输出为false,当然,内容不同就更是false了。
在这里插入图片描述

注意:上面我们强调了针对两个字符串类型的变量,如果用 “ == ” 来比较,则比较的是两个字符串变量是否指向的是同一个对象(是否对同一个对象据有管理权)


8.那么如果我们想比较两个字符串变量的内容是否一样,我们用什么来比较呢?我们应该用“ .equals ”,用字符串的功能来做这个东西;

字符串操作

1.字符串的变量是字符串的管理者,String是一个类,而字符串(的数据)就是对象。对这个对象的所有操作是通过“.”来进行的,一般格式为“ 字符串.操作 ”,表示左边这个字符串做右边那个动作,这里的字符串既可以是变量也可以是常量(变量就是指我们定义的字符串变量名,常量就是直接写“字面量”)。
1)().equals()可以比较两个字符串内容是否相等
2)().compareTo.()可以比较两个字符串的大小(实则比较的是在unicode中对应的整数编码的大小),如果前面大则输出为正,相等输出0,前面小则输出负。
3)().length(),这里后面一定要加括号,后面括号里面不写内容,是单目操作。(和数组里面不太一样,数组后面一个括号可以不加)
在这里插入图片描述
4)().charAt(index),返回index位置上的单个字符。
在这里插入图片描述
当然也可以和,().length()混起来用,遍历字符串(不可以用for-each循环。数组是可以的,因为数组可以枚举)
在这里插入图片描述
5)().substring(n)或者().substring(b,e),得到字符串的子串,这里的位置也是从0开始数的:
在这里插入图片描述
注意:如果是(b,e)一定要注意,我们是从b位置开始(包括b),到e之前的位置(也就是说不包括e位置的字符)
6)寻找字符或者字符串的位置:
在这里插入图片描述
注意: 这里的c是指单个字符,可以直接写为单引号加字面量的形式,返回的是位置值(从0开始的),-1表示不存在;t是指字符串,可以用直接写为双引号加字面量的形式,返回的是待查找的字符串第一个字符所在的位置值(从0开始),-1表示不存在(必须得完整的字符串存在才是真的存在); 如果原字符串里有两个想查找的字符,从左边查找的话,如何找到靠后的那个的那个呢?代码如下所示:在这里插入图片描述
这样的话就算有好几个,也都能找出位置,当然代码比较麻烦。 上面说的从n位置开始找,是包括n位置自己的。
7)在这里插入图片描述
2.尤其需要注意的是,这里的输出仍然是abc,也就是任何对字符串的操作都不能改变字符串本身,而是产生了一个新的字符串(按照我们的要求去做了),我们需要用另外一个字符串变量将他记录下来才能看到效果。
在这里插入图片描述
3.在1.7及以上版本中,switch(type)-case中的type控制表达式不一定要是整数型的结果了,可以换成字符串s;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为荒岛求生算法是一种解决荒岛求生问题的算法,通常使用Java语言进行实现。 荒岛求生问题是指一个人被困在一个荒岛上,需要寻找出路并且尽可能延长自己的生存时间。华为荒岛求生算法主要包括以下几个步骤: 1. 初始化地图:根据荒岛的地理信息,构建一个地图并初始化。地图通常使用二维数组来表示,其中每个位置代表岛屿的地形和是否可行走。 2. 定位初始位置:在地图中确定人物的初始位置,并为其设置生命值、饥饿值等属性。 3. 搜索出路:通过深度优先搜索或广度优先搜索等算法,在地图上寻找可行的路径,即表示荒岛上的出路。 4. 判断生存条件:在搜索出路的过程中,要根据人物的生命值、饥饿值以及地形等因素判断生存条件。比如,若人物生命值过低或饥饿值过高,则无法继续前行。 5. 优化算法:为了提高算法的效率和准确性,可以使用剪枝等技术对搜索过程进行优化。 6. 输出结果:当找到出路后,将路径输出,并计算人物在荒岛上存活的时间。 华为荒岛求生算法在解决荒岛求生问题上有着较好的性能和准确性。由于Java语言具有良好的跨平台性和易学易用的特点,因此选择Java来实现该算法是较为常见的选择。通过使用Java语言,可以方便地处理数组、递归等操作,并且可以更好地组织和管理代码,提高开发效率。 总之,华为荒岛求生算法是一种解决荒岛求生问题的算法,并且通常使用Java语言进行实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值