第二记 Java数据类型
一、数据类型
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数据类型的更多相关文章
- 学JAVA第三天,JAVA第二章《JAVA数据类型》
---恢复内容开始--- <JAVA数据类型> 我们一般都用int类型,因为int类行一般的日常生活的数据都能满足了. 当然,想李嘉诚,马云这种有钱人,int类行就不能满足帮他记钱的了,像 ...
- 第二天 Java语言基础
一.如何定义Java中的类 Java代码都定义在类中,类由class来定义,区分public class和class: 二.main方法的作用 main方法是程序的入口:保证程序的独立运行:被JVM调 ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- 201521123110第二周Java学习总结
1.本章学习总结 本周的Java学习相对前一周更进了一步,初步学习了Java简单的输入和输出,String类的对象创建后不能修改,它是不可变的,在Java中浮点型默认是double型与C中的int型不 ...
- 浅析Java数据类型
前言: 该系列会辅以MindMap进行说明. 下面会贴两张我不同时期画的Java数据类型的思维导图,本篇主要侧重于Java的8种基本类型 MindMap-1 这张MindMap主要是根据 菜鸟教程+参 ...
- JDBC数据类型、Java数据类型、标准sql类型
本概述是从<JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference>这本书中摘引来的.JavaSoft ...
- 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常
第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域
- 第二章Java内存区域与内存溢出异常
第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...
随机推荐
- POJ3641 Pseudoprime numbers (幂取模板子)
给你两个数字p,a.如果p是素数,并且ap mod p = a,输出“yes”,否则输出“no”. 很简单的板子题.核心算法是幂取模(算法详见<算法竞赛入门经典>315页). 幂取模板子: ...
- Django中的缓存机制
概述 对于中等流量网站来说,尽可能的减少开销是必要的.缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源. Django自带了一个健壮的缓存系 ...
- docker报错: x509: certificate has expired or is not yet valid
环境:最小化安装centos7 问题:docker 启动没问题,但是查询 镜像时报错 Error response from daemon: Get https://index.docker.io/v ...
- Vue.js 入门:从零开始做一个极简 To-Do 应用
Vue.js 入门:从零开始做一个极简 To-Do 应用 写作时间:2019-12-10版本信息:Vue.js 2.6.10官网文档:https://cn.vuejs.org/ 前言 学习 Vue ...
- Ansible的roles标准化与Jenkins持续集成(三)
Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...
- 怎么部署TFS
https://vsalm-hols.readthedocs.io/zh_CN/latest/sysadmin/tfs-installation-ad.html 根据以上网站的步骤一字不差的进行部署肯 ...
- Django过滤器之safe
safe除了将html生成安全的文本外,还有将整型转为字符串: {% for user in user_list %} {% if user.id|safe == uid %} <li clas ...
- express 的学习 (1)
- 安装`npm i express -S` - :引入express第三方对象 - :构建一个服务器对象 - :开启服务器监听端口 - :处理响应 1.下载 新建一个文件夹,cmd 进去,使用命令 ...
- Array Beauty
Array Beauty 给出一个长度为n的序列\(\{a_i\}\),定义一个序列的权值为其中元素两两之差的绝对值的最小值,询问\(\{a_i\}\)长度为K的子序列的权值之和\(\% 998244 ...
- Hive SQL之分区表与分桶表
Hive sql是Hive 用户使用Hive的主要工具.Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同.Hive SQL和Mysql的SQL方言最为接近,但是两者之间也 ...