Java程序入门(二)
来源:互联网 发布:梦想世界辅助软件 编辑:程序博客网 时间:2024/05/18 03:13
在上一节中,我们介绍了java的数据类型,其实就有了数据存储的机制,但是程序还需要拥有对数据的计算能力,这一节我们讲下Java的运算符和逻辑控制,再介绍下String的具体使用。
1. 运算符
基础运算符:就是四则运算
三目运算符:理解下面这句话就ok,在开发中常用!
public class TestDemo { public static void main(String[] args) { int x = 10; int y = 12; int result = x > y ? x : y; System.out.println(result); }}
- 逻辑运算符:<、>、<=、 >=、 ==、&&、||
- 位运算符:目的是要将十进制转二进制,然后再进行二进制运算,主要有&,|,^,~,<<,>>
2. 逻辑控制
if分支: if,else,else if
switch:记得每个case后都要加break,才不会一直输出。
public class TestDemo { public static void main(String[] args) { int x = 10; switch (x) { case 0: { System.out.println(0); break; } case 10: { System.out.println(100); break; } default: { System.out.println(1000); break; } } }}
- 循环控制:几种常见循环,for,while,continue的使用
3. String类的使用
3.1 String的实例化
直接赋值: String str = “Hello”
类初始化: String str = new String(“Hello”)
3.2 String的比较
- ==:这个比较实际是内存地址的比较。并不是堆内存中保存内容的比较,内容的比较用equal()方法。
public class TestDemo { public static void main(String[] args) { String a = "Hello"; String b = new String("Hello"); String c = b; System.out.println(a == b); //false System.out.println(b == c); //true System.out.println(a == c); //false }}
- equal():比较实际内容是否相同
3.3 String匿名对象
下面代码中,这里的Hello就是一个匿名对象,我们给他起了一个名字,就可以调用。
public class TestDemo { public static void main(String[] args) { String str = "Hello"; System.out.println(str.equals("Hello")); //true System.out.println("Hello".equals(str)); //true }}
在实际开发过程中,上述两种比较的方法貌似相同,但是实际推荐第二种写法。为什么呢?
采用第一种写法,当str是一个用户的输入时候,如果str为null,那么这里编译就会报错,因为调用这个方法就报NullPointException。如果采用第二种,就不会报错。因为字符串的匿名对象不可能为null,如果比较的内容为null,就直接返回false。
3.4 String两种实例化方法的分析
- 1.直接实例化的形式:
String str1="hello";String str2="hello";
首先开辟一块堆内存,用来存放”hello”,然后str放在栈内存中,直接指向这块堆内存。我们看下这两个的内存空间的情况。
为什么会这样呢?这里要介绍对象池的概念(Object Pool)
Java中有几个特殊的类,使用了共享设计,String就是其中一个。当使用直接实例化String的方式,字符串的内容会放在对象池中,如果再次调用,则直接去对象池中寻找是否有该内容,如果有,则直接指向原有的堆的地址,即“==”的比较也是相同的。
- 2.利用类的构造方法定义String
String str=new String("Hello")
继续看下内存关系:如果采用这种方法,将会多产生一块垃圾空间。
3.5 字符串的修改
首先,明确一点,字符串定义后就不能修改!
很多人质疑这一点,我们来分析下下面这段代码:
public class TestDemo { public static void main(String[] args) { String str = "Hello"; str+=" world!!"; System.out.println(str); //Hello world!! }}
我们来分析下上面这段代码在内存空间的情况:
我们可以看到,字符串str本身一直都没变,只是对象的引用发生改变,但是这样产生了很多的垃圾空间,所以在实际开发中,要防止多次改变String对象的情况。所以String不适合频繁修改。
总结下,String在开发中使用直接赋值的方法,比较内容时候用equal方法,并且不要经常修改String对象的内容。
- Java程序入门(二)
- SpringMVC入门程序(二)
- MyBatis (二) 入门程序
- 《Java Web程序开发入门》知识总结(二)
- 【JavaScript】程序入门(二)
- JAVA入门(二)
- java速度入门二
- Java入门学习二
- java速度入门二
- java入门练习题二
- java入门二
- 【Java】Socket入门 [二]
- JAVA 入门测试(二)
- Java入门 二、封装
- Java入门二
- java入门(二)
- JAVA入门笔记二
- java程序入门基本
- BigIntegerMultiplyWXJ
- kwk
- 面试经历
- 细说 AppbarLayout,如何理解可折叠 Toolbar 的定制
- java基础之面向对象(1)
- Java程序入门(二)
- [第六季]10.对象、数组及表格处理
- 关于Map和HashMap的思考
- http错误码
- 小型三维引擎设计实现-地球的渲染方法
- scanf 格式化字符串详解
- Windows 安装 Anaconda3 详细过程
- hdfs架构的简述与hdfs读写策略
- 利用Hadoop计算FVC(植被覆盖度)思路