Java的scjp,Java(一些基础) for SCJP
整数型
整数型是一类代表整数值的类型。当需要代表一个整数的值时,可以根据需要从4种类型中挑选合适的,如果没有特殊要求的话,一般选择int类型。4种整数型区别主要在每个数据在内存中占用的空间大小和代表的数值的范围。具体说明参看下表:
整数型参数表
类型名称 关键字 占用空间(字节) 取值范围 默认值
字节型 byte 1 -27—27-1 0
短整型 short 2 -215—215-1 0
整型 int 4 -231—231-1 0
长整型 long 8 -263—263-1 0
说明:1、Java中的整数都是有符号数,也就是有正有负。
2、默认值指在特定的情况下才自动初始化,具体的情况后续将有叙述。
3、程序中的整数数值默认是int以及int以下类型,如果需要书写long型的值,则需要在数值后面添加字母L,大小写均可。
4、程序中默认整数是十进制数字,八进制数字以数字字符0开头,例如016、034等,十六进制数字以数字字符0和字母x(不区分大小写)开头,例如0xaf、0X12等。
小数型
小数型是一类代表小数值的类型。当需要代表一个小数的值时,可以根据需要从以下2种类型中挑选合适的。如果没有特殊要求,一般选择double类型。
由于小数的存储方式和整数不同,所以小数都有一定的精度,所以在计算机中运算时不够精确。根据精度和存储区间的不同,设计了两种小数类型,具体见下表:
小数型参数表
类型名称 关键字 占用空间(字节) 取值范围 默认值
单精度浮点型 float 4 -3.4E+38—3.4E+38 0.0f
双精度浮点型 double 8 -1.7E+308—1.7E+308 0.0
说明:1、取值范围以科学计数法形式进行描述。
2、在程序中,小数的运算速度要低于整数运算。
3、float类型的小数,需要在小数后加字母f,不区分大小写,例如1.01f。
字符型
字符型代表特定的某个字符,按照前面介绍的知识,计算机中都是以字符集的形式来保存字符的,所以字符型的值实际只是字符集中的编号,而不是实际代表的字符,由计算机完成从编号转换成对应字符的工作。
Java语言中为了更加方便国际化,使用Unicode字符集作为默认的字符集,该字符集包含各种语言中常见的字符。
在程序代码中,字符使用一对单引号加上需要表达的字符来标识,例如’A’、’a’等,当然也可以直接使用字符编码,也就是一个非负整数进行表示。
字符型参数表
类型名称 关键字 占用空间(字节) 取值范围 默认值
字符型 char 2 0-216-1 0
说明:1、字符型的编号中不包含负数。
2、字符型由于存储的是编号的数值,所以可以参与数学运算。
3、字符型可以作为Java语言中的无符号整数使用。
4、字符型的默认值是编号为0的字符,而不是字符0
布尔型
布尔型代表逻辑中的成立和不成立。Java语言中使用关键字true代表成立,false代表不成立。布尔型是存储逻辑值的类型,其实很多程序中都有逻辑值的概念,Java把逻辑的值用布尔型来进行表达。
布尔型参数表
类型名称 关键字 占用空间(字节) 取值范围 默认值
布尔型 boolean true或false false
说明: 1、布尔型占用的空间取决于Java虚拟机(JVM)的实现,可能是1位也可能是1个字节。
4、数据类型转换
自动类型转换:byte→short(char)→int→long→float→double
注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失
强制类型转换:double→float→long→int→short(char)→byte
注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。
5、算术运算符
晋升指低于int的3种数字类型(byte、short和char)进行算术运算后,结果会自动提升成int类型。
另外一个需要注意的就是,变量在计算时必须被赋值,否则直接报语法错误。
6、逻辑运算符
&&和&的区别,其实在进行逻辑与运算时,既可以使用&&也可以使用&,在功能上本身没有区别。两者区 别的位置在,对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不 计算右侧的条件,这种现象被称作短路现象。
7、赋值运算符
注意:复合赋值运算不会改变结果的类型,所以在有些时候运算在逻辑上会出现错误,但是符合计算中数值的表述。
byte b = 127;
b += 1;
System.out.println(b);
根据前面的介绍,byte类型的取值区间是-128~127,由于复合赋值运算符不改变结果的类型,则导致结果是-128,而不是128。原因如下:
l byte类型值127的机器数是01111111,0表示正数,后续的数值表示127
l 该数值加1后,得到的数值是10000000,二进制加法
l 而10000000在byte类型中恰好是-128的机器数表示形式
其它类型的符合运算符也可能存在类似的情况,使用时需要注意。
8、移位运算符
在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动 的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是 移动66次和移动2次得到的结果相同。
<
数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
>> 运算规则: 按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
>>> 运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
9、运算符优先级
运算符优先级表
优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 << >> >>> 从左向右
6 < <= > >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左
说明:
1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
2、 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
3、 instanceof作用是判断对象是否为某个类或接口类型,后续有详细介绍。
4、 注意区分正负号和加减号,以及按位与和逻辑与的区别
10、表达式
件运算符的结果类型和两个值中类型高的一致
double d;
d = 10 > 0 ? 1.0 : 2; //由于1.0是double型,2是整数型,则表达式的类型是double
11、switch语句语法
switch语句的语法格式为:
switch(表达式){
case 值1:
功能代码1;
[break;]
case 值2:
功能代码2;
[break;]
……
default:
功能代码1;
[break;]
}
语法说明:
1、 表达式的类型只能为byte、short、char和int这4种之一。
2、 值1、值2…值n只能为常数或常量,不能为变量。
3、 功能代码部分可以写任意多句。
4、 break关键字的意思是中断,指结束switch语句,break语句为可选。
5、 case语句可以有任意多句,是标号语句。
6、 default语句可以写在switch语句中的任意位置,功能类似于if语句中的else。
12、数组
总结来说,主要有以下几点:
1、 数组中的元素类型必须相同。
2、 数组的长度一旦指定即不能改变。
3、 数组中的值通过数组名和下标组合起来进行访问。
静态初始化:静态初始化必须和数组的声明位于同一行,换句话说,只能在声明数组的同时进行静态初始化。
动态初始化:动态初始化可以不必和数组的声明放在一起,也可以重新初始化一个初始化的数组。
动态初始化默认值的规定如下:
a、 boolean类型的默认值是false。
b、 其它7种基本数据类型是0。说明:char的默认值是编码为0的字符,而不是字符0。
c、 复合数据类型的初始值是null。
Java的scjp,Java(一些基础) for SCJP相关推荐
- 学习Java知识应该注意哪些基础原则
想要做java程序猿,学习起来没有那么快的,尤其是零基础学员,java技术在学习的过程中是比较枯燥的,下面小编就为大家详细的介绍一下学习Java知识应该注意哪些基础原则,方便大家在学习的时候能够更加有 ...
- Java培训好不好?零基础可以学吗?
5g时代的来临,越来越多的人开启智能时代,互联网行业的发展速度越来越快,高薪行业一直受到很多人的关注,尤其是java这一块,很多人都想学习,那么参加Java培训好不好?零基础可以学吗? Java培训好 ...
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...
- Java综合知识总结_基础篇
Java 一.JDK常用的包 java.lang: 这个是系统的基础类,比如String.Math.Integer.System和Thread, 提供常用功能. java.io: 这里面是所有输入输出 ...
- 给Java初学者福利——Java语法基础
Java代码基本格式 Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符.格式如下: 修饰符 class 类名 { 程序代码 } 注: 1.Java ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...
- java jdbc 链接pg_Java零基础教程
今天就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容. 首先,给大家分享一张以 企业岗位需求为导向 Java工程师技能点图 根据 Java工程师技能点图,我们分为四个阶段: 第一阶段 :Jav ...
- python和java哪个好学、零基础-老男孩零基础学习|python和java那个更有发展前景?...
python和java该如何选择?学习哪个更好呢?这对于很多人来说都是非常困扰的问题,也是很多IT从业者都比较关注的问题啊,很多人都知道python和java都是比较受欢迎的开发语言,目前在互联网上需 ...
- 零基础是学java还是python-老男孩零基础学习|python和java那个更有发展前景?
python和java该如何选择?学习哪个更好呢?这对于很多人来说都是非常困扰的问题,也是很多IT从业者都比较关注的问题啊,很多人都知道python和java都是比较受欢迎的开发语言,目前在互联网上需 ...
- 零基础java自学就业_java零基础到就业需要多长时间呢?
展开全部 先以肯定的语气说明一下自学e68a84e8a2ad62616964757a686964616f31333433663030Java,多久可以找到工作: 按照目前Java的体系来说,Java的 ...
最新文章
- dropbear编译安装及服务脚本编写
- Java项目实训报告
- python 服务器_只要一行Python代码,就能搭建一个共享文件局域网服务器
- R语言观察日志(part13)--从GitHub中下载R包
- java 类加载生命周期_Java类的加载与生命周期
- Android权限设置引导
- mysql+hive+建表语句,在Oracle、MySQL中执行sql脚本生成hive建表语句
- CISSP考试认证心得
- TensorFlow和PyTorch框架绘制loss和accuracy曲线
- Google野心勃勃,微软前程堪忧!(转)
- 微信域名防封、域名检测接口api、域名跳转技术、360防拦截揭秘(三)------2020新域名防封技术解析
- TI CC3200 WIFI实训开发套件(OURS-SDK-WFB)IAR for ARM7.8调试2————对IAR for ARM的熟悉,并在开发板上跑起来第一个程序
- 随机抽人名小程序_篮球还可以这样玩?推荐你3个篮球趣味游戏小程序
- 北京荣达对便携式打印机的行业分析
- 共享超级蜘蛛池,使用经验和技巧。
- 实用最优化方法课后习题-第三章
- CQUPT Java平时作业04
- python redis连接池_redis 连接池
- origin作图常用技巧
- 云客Drupal源码分析之数据库系统及其使用
热门文章
- 锐捷交换机 查看端口流量信息
- 【转载】oracle normal、sys、system、sysdba、sysoperdba的区别
- 计算机一级考试系统改革,以等级考试为导向的大学计算机改革
- wps怎么做时间线_品牌锦囊 I 我想做企业宣传册,我的公司有很多业务线,怎么设计?...
- oracle in _all和any的区别,oracle经验之ANY,SOME,ALL区别
- java nio connect_服务器或客户端上的Java NIO套接字在什么时...
- 施工工期计算器在线_办公室装修工期要多久时间,办公室快速装修怎么做?
- 定时器的实现原理 不消耗cpu_一直在使用JDK动态代理, 不明白原理如何实现?
- 计算机系统应用技术课程,基于protégé的课程内容本体的构建-计算机系统应用.pdf...
- c++ mat赋值_Mat 的几种初始化和赋值方法