一、数据类型

  java中数据类型分为基本数据与引用数据类型两大类,其中又有更细致的划分,下面以图展示

二、基本数据类型封装类

Java是一门面向对象的语言,但是在一些情况下基本数据类型无法满足Java面向对象的特性,我们便可以调用包装类的方法完成我们所需要的操作

三、String类

1.String类的两种实例化方式

String是一个很特殊的类,我们通常称呼它为字符串,它既可以采用基本数据类型一样的赋值方式,也可以采用类的方式new一个对象

范例:String str="Hello";

   String str=new String("Hello");

2.字符串之间的比较

说到比较就不得不说 == 和 equals() 方法之间的区别了

“==” 操作符专门用来比较两个变量之间的值是否相等,也就是要比较两个基本类型的数据之间的值是否相等,只能用“==”操作符

如果一个变量指向的数据是对象类型的,那么这时候涉及到了两块内存空间, 如 String str = new String("hello"),变量(在对象这里也叫对象引用名)str占用一块内存(栈空间),对象本身new String("hello")占用的是另一块内存(堆空间),此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。如果要比较两个变量是否指向同一个对象(即看这两个变量所对应的内存中的数值是否相等),这时候就需要使用“==”操作符进行比较了

equals() 方法是用于比较两个独立对象的内容是否相同,比如说两本一年级语文书,用==比较的就是这两本语文书是否是同一本一年级语文书,很明显是false,用equals比较的就是这两本语文书是否内容相同,很明显是true

讲明白这些,接下来讲一下字符串之间的比较

(1) 使用 == 比较字符串

    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1 == str2) ;

控制台输出:false

见解:因为str1和str2保存在栈内存中,分别存放了两个对象所保存的内存地址的数值,因此不相等。这种比较属于地址数值比较,并没有比较对象的内容

(2) 使用 equals() 比较字符串

    String str1 = "hello" ;

    String str2 = new String("hello");

    System.out.println(str1.equals(str2)) 

控制台输出:true

(3)

    String str1 = "hello" ;

    String str2 = "hello" ;

    System.out.println(str1 == str2) ;

    System.out.println("hello" == str2) ;

    System.out.println("hello" == "hello") ;

控制台输出:全为true

见解:在JVM的底层实际上会自动维护一个对象池(字符串对象池),如果现在采用了直接赋值的模式对String类对象的实例化操作,那么该实例化对象(字符串)将自动的保存到这个对象池之中。如果下次继续有人使用了直接赋值的模式声明了String类的对象,那么如果此时对象池之中有指定的内容,将进行直接引用,如果没有,则开辟新的字符串对象,而后将其保存在对象池之中以供下次使用(所谓的对象池就是一个对象数组)

3.字符串特性

(1)不可变性:由于字符串是不可变的。所以每次修改字符串都是创建一个单独的字符串副本(又拷贝了一个字符串);

(2)字符串池:当程序中有多个相同的字符串常量时,这时,这些字符串都是指向内存中的同一个字符符串,这个特性叫做:字符串池。之所以字符串池不会造成程序的混乱,也是因为:字符串具有不可变性;

(3)字符串留用(不常用,因为会有一定的内存损耗);

(4)字符串底层实际上就是字符数组,这也是字符串不可变特性的原因之一。

四、Java编程基本规范

良好的Java书写规范,是一名合格的Java开发者所必须具备的条件之一,同时也能保证我们在编程中出错率减少。

在各个文件中,变量名、方法名、类名注意命名时应当见名知义

规则:即为前人定义好的,不可违背

字母(Java中大小写敏感)、数字(不允许为开头)、符号(英文符号_$)、中文(不推荐,就当没有)

规约:即为后来者约定俗成的的规则

类名
首字母大写 两个以上的单词所有首字母大写,即为驼峰命名法
如:SuperPerson
变量名
首字母小写 两个以上的单词,之后的单词首字母大写
如:personName
常量名
字母全大写
如:PERSONCULTURE
方法名
首字母小写 两个以上的单词,之后的单词首字母大写
如:personEat

第二记 Java数据类型的更多相关文章

  1. 学JAVA第三天,JAVA第二章《JAVA数据类型》

    ---恢复内容开始--- <JAVA数据类型> 我们一般都用int类型,因为int类行一般的日常生活的数据都能满足了. 当然,想李嘉诚,马云这种有钱人,int类行就不能满足帮他记钱的了,像 ...

  2. 第二天 Java语言基础

    一.如何定义Java中的类 Java代码都定义在类中,类由class来定义,区分public class和class: 二.main方法的作用 main方法是程序的入口:保证程序的独立运行:被JVM调 ...

  3. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  4. java.sql.Types,数据库字段类型,java数据类型的对应关系

    以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...

  5. 201521123110第二周Java学习总结

    1.本章学习总结 本周的Java学习相对前一周更进了一步,初步学习了Java简单的输入和输出,String类的对象创建后不能修改,它是不可变的,在Java中浮点型默认是double型与C中的int型不 ...

  6. 浅析Java数据类型

    前言: 该系列会辅以MindMap进行说明. 下面会贴两张我不同时期画的Java数据类型的思维导图,本篇主要侧重于Java的8种基本类型 MindMap-1 这张MindMap主要是根据 菜鸟教程+参 ...

  7. JDBC数据类型、Java数据类型、标准sql类型

    本概述是从<JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference>这本书中摘引来的.JavaSoft ...

  8. 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域  

  9. 第二章Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...

随机推荐

  1. Git比较分支差异的3个命令

    查看本地分支 git branch 查看远端分支,无论是否checkout到本地 git branch -r 假如想比较dev和master 命令1:比较文件 git diff dev master ...

  2. spark优化——依赖包传入HDFS_spark.yarn.jar和spark.yarn.archive的使用

    一.参数说明 启动Spark任务时,在没有配置spark.yarn.archive或者spark.yarn.jars时, 会看到不停地上传jar,非常耗时:使用spark.yarn.archive可以 ...

  3. multiple-cursors做代码对齐

    multiple-cursors做代码对齐 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839 ...

  4. python-request模块--安装

    Request是python中一个发送http请求的包, pip安装: pip install Requests (==版本号) 如果你没有安装pip那么需要先安装pip,pip是python中基本的 ...

  5. Vue 单页应用 的 首屏优化

    对于单页应用,要在一个页面上为用户提供产品的所有功能,在这个页面加载的时候,首先要加载大量的静态资源,这个加载时间相对比较长.所以我们需要做一些相应的优化,减少响应时间,尽快把首屏显示出来. 1.压缩 ...

  6. JS中的迭代(数组)

    啥子是迭代?可以简单地理解为按顺序访问目标(数组.对象等)中的每一项(其实和遍历概念没什么差别) 数组的迭代被我分为两种: 查找 遍历 查找: 1.indexOf(item,start) 该方法搜索指 ...

  7. HTML + CSS (下)【更新中】

    弹性盒子: 定义:弹性盒子模型是css3中新提出的一种布局方案.是一种为了应对针对不同屏幕宽度不同设备的一整套新的布局方案. 主要是对一个容器中的子元素进行排列.对齐和分配空白空间的方案的调整. 新旧 ...

  8. iOS音频Error

    最近在cocos应用上发现一个比较奇怪的bug,当应用正在调用录音的时候,按下home键回到后台,然后打开一个音乐播放器播放一个音乐,再回到游戏中游戏就会卡死. 之前录音和播放设置是下方: 播放: [ ...

  9. 导入C文件Xcode出现Could not build module 'Foundation'错误

    #ifdef __OBJC__ #import <Foundation/Foundation.h> #import "UIImageView+WebCache.h" # ...

  10. adb.exe端口被占用,起不来报错

    一.准备部署android功能调试时:报错 Please ensure that adb is correctly located at 'D:\ProgramFiles\eclipse_jee_ox ...