热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中的变量八大类型以及字符串

第一次发博客,创建一个有关Java学习的路程,现在大一下,本人大一上学习c++但是为通过csdn进行记录,觉得很是可惜,但是我在数据结构中会使用c++进行演示,进行一次温习吧,学习编程嘛,就是周

第一次发博客,创建一个有关Java学习的路程,现在大一下,本人大一上学习c++但是为通过csdn进行记录,觉得很是可惜,但是我在数据结构中会使用c++进行演示,进行一次温习吧,学习编程嘛,就是周而复始不能间断。(好进入正题)

额,在多说一句,我的Java学习路径是依据霍斯特曼教授的《Java核心技术》来进行的,同时夹杂个人的看法以及理解,若有不恰之处,望诸位不涩赐教。(真的进入正题~)

一.数据类型

Java中含有8中数据类型,

1.4种整形:

(1)int (4字节)short(2字节)long(8字节)byte(1字节),Java中没有unsigned型

长整型需要一个后缀(l/L)

这里存在一个误区就是如果定义long型变量一个小于int最大值(2147483647)的值不加后缀L没有错误,但是定义个大于2147483647的值就会报错如下

,个人推荐只要是long型变量就全部用L型后缀(菜鸟也就说说对不对不知道了)。

由于Java默认整形为int型所以当两个byte型变量计算后就会变成默认的int型代码如下:


这个时候就要使用显示强制转换来将右值转化成byte型。

(2)在一个是关于进制问题,前缀分别如下:

二进制:0b, 八进制:0,十六进制:0x 

Java7开始可以用下划线来隔开数值 例如:


但是Java在编译的时候会切除下划线而不影响该数值。

2.浮点性

float (4字节)  double(8字节)

Java默认浮点型为double,所以float型变量需要加上后缀(f/F)。

对于溢出有以下的出错误情况:

无穷大:Double.POSITIVE_INFINITY

无穷小:Double.NEGATIVE_INFINITY

不是数字:NAN

可以Double.isNan(x)来区别x是不是一个数字。

但是无法使用无穷小和无穷大来区别,毕竟计算机也不知道无穷小和无穷大到底是哪一个数。

3.char(类型)

用到char型就不得不说万国码(Unicode)了,绝大部分万国码可以使用一个char来进行描述,而有些为2个。

特殊字符的转义序列有:

\b 退格    \t  水平制表符    \n换行     \r回车     \"  引号      \'单引号     \\反斜杠

Unicode 转义序列是在解析代码之前就处理,这个就比较尴尬,例如(\u0022是表示双引号)看下面的代码:

	System.out.println("\u0022+\u0022");

按理应该输出“”但是输出一个空串

4.boolean型  

Java中这个只有true和false两个类型,关键是不能将0和非0转化为布尔型,这个对于一个熟悉c++的人来说有一点点“不爽”,编程体较差。或许这也是它不叫bool要改成boolean的原因吧。


二.变量和常量

Java和c++不一样Java中使用final来定义常量而c++中为const,但是const为保留字在Java中。

常量在于这个值只能复值一次不能在更改,而且常量在定义时必须初始化,而变量则可以定义不初始化。

(常量的标识符全部用大写)

还有一个就是类常量使用static final来定义,但是类常量定义必须在main方法外部。

三.运算符

首先Java中的运算符优先级如下(来自百度):

运算符 结合性
[ ] . ( ) (方法调用) 从左向右
! ~ ++ -- +(一元运算) -(一元运算) 从右向左
* / % 从左向右
+ - 从左向右
<<>> >>> 从左向右
<<= > >= instanceof 从左向右
== != 从左向右
& 从左向右
^ 从左向右
| 从左向右
&& 从左向右
|| 从左向右
?: 从右向左
=
从右向左

对于除法有这样的规则:只有当两个操作数全部为整数时才会采用整数除法,否则采用浮点除法代码如下:

        System.out.println(15/2);//结果为7
	System.out.println(15.0/2);//结果为7.5

在一个重要的就是逻辑运算符和位运算符

逻辑运算符:&&(逻辑和)||(逻辑或)这两个运算都是按照“短路”方式来进行运算的。

特点:只要前部分不满足或者前部分满足那么,它就不会进行后部分运算。

位运算符:对一个变量的数在二进制上进行操作。


四.Java中的Math类

1.sqrt()开方     2.pow(x,a)幂运算x的a次方   3.sin(),cos(),tan(),PI(π),E(自然底数e)

五。强制转换

所占字节数大的变量转化为所占字节数小的类型变量它的精度通常不改变(个人理解,若有不恰之地,还望指教)。



红色代表会存在精度缺失黑色不存在。

强制转化是截断数据进行转化,不是四舍五入。但是可以利用Math类的静态函数round来实现四舍五入。代码如下;

            double num=9.99;
            int num1=(int) num;//num1为9
            System.out.println(num1);
	    int num2=(int) Math.round(num);//num2为10
	    System.out.println(num2);

在使用round()函数后会返回一个long型的变量,故还需要进行强制转化。

六.字符串


1.字符串是对象

字符串都是用“ ”来包括的。

对Java中String而言他本身就是一个lang包里的类所以,他不是一个基本类型,故它可以用来做变量名,但是int等基本类型就不行了。(c++里string也是一个类...同样可以做变量名)

c++:

//c++中string可以做变量名
	string string = "asdsagdsf";
	std::cout < 
 

Java:

        String String ="asdasf";
	System.out.println(String);

但是当你在所属包中创建一个同名String类就会报错截图如下:



他就会报错说是无法完成从lang包的转化。

2.字符串的子类

字符串可以使用方法substring(int a,int b)来提取一个子字符串,从a开始到b的前面一个字符,所以子字符串的长度为b-a;

3.拼接i

使用+来拼接两个字符串。

静态方法join()方法是把数组元素放到一个字符串元素通过指定的分割符来分开

	String str=String.join("/*/", "我","不","是","单身狗");
	System.out.println(str);

效果图:

4.拼接ii

利用函数substring()来进行拼接

                String str="你好!";
		System.out.println(str.length());
		str=str.substring(0,3)+"不好!";
		System.out.println(str);

5.判断是否字符串相等

使用方法equals()。不能使用==,否者比较的就是二者位置是否相等。(c++也是)


推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
搬地瓜per
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有