Java基础-比较运算符Compare Operators

                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.关系运算符

  关系运算符包括:

    1>.大于(>)

    2>.大于等于(>=)

    3>.小于(<)

    4>.小于等于(<=)

    5>.等于(==)

    6>.不等于(!=)

  关系运算的结果是一个布尔值。

二.基本数据类型比较

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class CompareDome{
public static void main(String[] args){
System.out.println( 10 > 5 ); //true
System.out.println( 10 >= 5 ); //true
System.out.println( 10 < 5 ); //false
System.out.println( 10 <= 5 ); //false
System.out.println( 10 == 5 ); //false
System.out.println( 10 != 5 ); //true int a = 10;
int b = 20;
System.out.println( a > b ); //false,变量进行比较是比较两个变量的值。
}
}

三.字符串的比较

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class CompareDome2{
public static void main(String[] args){
String s1 = "abc";
String s2 = "abc"; //直接赋值字符串字面量
String s3 = "ab" + "c"; //使用加号可以进行字符串的链接
String s4 = new String("abc"); //使用String类的构造方,创建字符串对象 System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4); System.out.println(s1 == s2); //true
System.out.println(s1 == s3); //true
System.out.println(s1 == s4); //false
System.out.println(s2 == s3); //true
System.out.println(s3 == s4); //false }
}

  你可能会疑问,为什么输出的布尔值一次是:“true,true,false,true,false”,其实很简单,我们需要了解一下“堆区,栈去和方法区”。

  1>.Java把内存分为栈区,堆区,方法区三块;

  2>.s1,s2,s3,s4这四个是main方法中定义的局部变量,这四个变量在栈区中分配存储空间;

  3>.“abc”是使用双引号引起来的字符串字面量,字符串字面量存储在方法区中的常量区里。系统会先在常量区查找这个字符串是否存在,如果不存在就把“abc”字符串存储在常量区,然后把在常量区中的存储地址赋(内存地址)值给变量s1;如果常量区中有这个字符串,就直接把这个字符串的存储地址(内存地址)赋值给变量s2;

  4>.“ab”+“c”是两个字符串常量进行连接病生成一个新的字符串常量“abc”,现在常量区中已经存在“abc”字符串了,就直接把“abc”的存储地址(内存地址)赋值给变量s3;

  5>.s4这个字符串是通过new运算符创建的,new运算符会在堆中单独分配一块存储空间(内存地址),并将这个存储空间的内存地址赋值给变量s4,而分配的这个内存地址中存储的vlaue就是常量区中的“abc”。我们可以通过下图帮助我们理解:

  如果想要比较字符串中的每个字符是否都一样,可以使用“equals()”方法。

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class CompareDome3{
public static void main(String[] args){
String s1 = "abc";
String s2 = "abc"; //直接赋值字符串字面量
String s3 = "ab" + "c"; //使用加号可以进行字符串的链接
String s4 = new String("abc"); //使用String类的构造方,创建字符串对象 /**
String 是一个类,是一种引用数据类型。
s1,s2,s3,s4中存储的内容是从另外一块存储空间的引用(地址)。使用双等号(==)
进行比较时,是比较的这些变量中的值,即是否都引用了另外一块存储空间引用(地址)
*/ //如果想要比较字符串中的每个字符是否都一样,可以使用“equals()”方法。
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s1.equals(s4)); //true
System.out.println(s2.equals(s3)); //true
System.out.println(s2.equals(s4)); //true
System.out.println(s3.equals(s4)); //true
}
}

Java基础-比较运算符Compare Operators的更多相关文章

  1. Java基础-位运算符Bitwise Operators

    Java基础-位运算符Bitwise Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.位运算特点 位运算符分为按位与(&),按位或(|),按位异或(^ ...

  2. Java基础-算术运算符(Arithmetic Operators)

    Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...

  3. Java基础(运算符)

    Java中的运算符: 算术运算符:+  -  *  /   %    ++     -- %运算符叫取模:它就是取余的例如:43%7=1 其他的都是和数学里的运算符一样(不过在字符串中如果是两个字符串 ...

  4. Java基础之 运算符

    前言:Java内功心法之运算符,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,J ...

  5. java 基础one ---运算符and流程控制

    首先java这个了解下java的基础 首先java文件都是以.java结尾的  然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...

  6. 恶补java基础 位运算符

    以前不知道在哪看过别人写博客里的一句话  “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法  hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...

  7. java基础2_运算符,选择语句

    算数运算符  +    相加  字符串的连接  正数 -    相减  负数 *    相乘 /    相除    10 / 3 ==> 3  两个操作数中精度最高的是int 结果也是int % ...

  8. 再回首,Java温故知新(七):Java基础之运算符

    常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...

  9. Java基础——Instanceof 运算符

    Instanceof 运算符 java 中的instanceof 运算符是用来在运行时指出对象是否为特定类的一个实例 instanceof运算返回值:boolean类型 用法 boolean resu ...

随机推荐

  1. P2463 [SDOI2008]Sandy的卡片

    写一种\(O(nm)\)的做法,也就是\(O(\sum 串长)\)的. 先通过差分转化,把每个数变成这个数与上一个数的差,第一个数去掉,答案就是最长公共子串+1 按照套路把所有串拼起来,中间加一个分隔 ...

  2. mysql安装版多次安装导致安装失败的解决方法(windows)(直接使用免安装方法)

    https://www.cnblogs.com/feilongblog/p/mysql_install_init.html 测试成功 要点:mysqld install MySQL --default ...

  3. JavaScript中call,apply,bind方法的区别

    call,apply,bind方法一般用来指定this的环境. var a = { user:"hahaha", fn:function(){ console.log(this.u ...

  4. [BZOJ3809]Gty的二逼妹子序列[莫队+分块]

    题意 给出长度为 \(n\) 的序列,\(m\) 次询问,每次给出 \(l,r,a,b\) ,表示询问区间 \([l,r]\) 中,权值在 \([a,b]\) 范围的数的种类数. \(n\leq 10 ...

  5. 把Excel的数据导入到数据库

    将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个packag ...

  6. 巧用ios朗读kindle图书

    想必大家都有想过kindle出中文的有声阅读刊物吧? 今天突发奇想想到一招能够让我们听自己拿kindle买的中文图书.当然这是有条件的. 前提是你得有一个ios设备,不管是iphone还是ipad,i ...

  7. Flutter - 创建侧滑菜单(不使用navigatior,仅改变content)

    之前写过一篇文章,Flutter - 创建横跨所有页面的侧滑菜单.这个里面中使用了Navigator.of(context).push来导航到新的页面. 这次介绍一种不使用导航,仅仅改变content ...

  8. Ing_制作在线QQ

    制作在线QQ的具体步骤 1.首先登录到http://is.qq.com/webpresence/code.shtml 网站2.选择风格3.填写相关数据4.生成网页代码5.复制代码到“写字板”,另存文件 ...

  9. nodejs安装及npm模块插件安装路径配置

    在学习完js后,我们就要进入nodejs的学习,因此就必须配置nodejs和npm的属性了. 我相信,个别人在安装时会遇到这样那样的问题,看着同学都已装好,难免会焦虑起来.于是就开始上网查找解决方案, ...

  10. 镜像仓库管理:与Portus不得不说的那些事

    背景: 目前在做一个云计算相关的项目,其中有这样一个需求:每个平台用户都有自己的docker镜像仓库(docker registry),用户可以对自己的镜像仓库的push/pull权限进行管理,也就是 ...