【知了堂学习笔记】java 底层容易忽略的知识点
1. java中的关键字
提到关键字,最主要的就是不能用关键字作为标识符,值得注意的有以下几点。
①其中goto与const在java中没有定义,但是也是关键字。这个基本用不到,但是应该有个认知。
②true,false,null虽然不是关键字,但是作为一个单独的标识类型,也不能作为标识符使用。
2. java中的引用数据类型
说道数据类型,首先想到的就是八大基本数据类型,这是经常用到的都很熟悉,但是引用数据类型就容易被忽略,(这些只是根据皮皮潇个人容易的知识缺失来写的,对于大神们不太实用)而应用数据类型有三种 类、接口、数组。
3.数据溢出
当给定的数字大于了给定的数据类型能存储的数字时就会出现数据溢出,这时数字会出现一个轮回(如int最大的数字max+1得到的却是zu最小的数字min)当然这个作为了解有个认知。
4.包装类
八大包装类
基本数据类型 | byte | boolean | short | char | int | long | float | double |
包装类 | Byte | Boolean | Short | Character | Integer | Long | Float | Double |
其中Character与Integer是特别的不予其基本数据类型相同
包装类的作用:
java是面向对象的语言,每一种基本数据类型都应该有对应的对象类型,方便对基本类型进行操作。包装类型可以解决一些基本类型解决不了的问题
会用到包装类的情况:
①函数需要传递一个Object变量,而你想传递int类型的时候
②集合不允许存放基本数据类型,只能存放包装类型。
③基本数据类型之间的转换
④String类型的想要和基本数据类型转换也得用到包装类
5.常用的转义字符
\f | 换页 | \r | 归位 |
\\ | 反斜线 | \" | 双引号 |
\b | 倒退一格 | \t | 与teb意思相同 |
\' | 单引号 | \n | 换行 |
6基本数据类型的默认值
byte | (byte)0 | float | 0.0f |
short | (short)0 | double | 0.0d |
int | 0 | char | \u0000 |
long | 0l | boolean | flase |
其中boolean与char我也是最近才知道的
7.++a与a++的区别
这个东西往往单独列出来的时候不难,插入到程序里面就容易出问题,而且不容易发现。a++是先执行整个语句再加1,++a是先加1再执行整个语句。
8.逻辑运算符中的&&与&,||与|的区别.
与分为短路与和非短路与,或分为路或与非短路或。
短路的意思就是路被堵住了后面过不去,即使用短路与的时候只要第一个条件为false即后面的条件不会执行,短路或就是第一个条件为true后面的就不会执行。然而与和或就会将两个条件都执行。
9.位运算
& | 按位与 |
| | 按位或 |
^ | 异或(相同取0,不同取1) |
~ | 取反 |
<< | 左位移 |
>> | 右位移 |
>>> | 无符号位移 |
在java中所有数据计算都是以二进制计算的,所以最后都会化为二进制来计算。
①&的运算(3&5)
00000000 00000000 00000000 00000011 3的二进制数据
00000000 00000000 00000000 00000101 5的二进制数据
00000000 00000000 00000000 00000001 结果为1的二进制数据,所以结果为十进制的1
②|的运算(3|5)
00000000 00000000 00000000 00000111 结果为7的二进制数据,所以结果为十进制的7
③^的运算(3^5)
00000000 00000000 00000000 00000110 结果为6的二进制数据,所以结果为十进制的6
④负数的二进制运算
由于计算机只定义了正数的表示形式,所以负数一般都用补码的形式表示.负数一般经过原码经过反码,补码的过程。
负数的反码就是符号为1外,其余全部取反,补码为反码加1
10000000 00000000 00000000 00000011 -3的原码
11111111 11111111 11111111 11111100 -3的反码
11111111 11111111 11111111 11111101 -3的补码
⑤~的运算(~(-3))
11111111 11111111 11111111 11111101 -3的补码
00000000 00000000 00000000 00000010 (~(-3))的值为十进制的2
⑥<<运算(3<<2)即使3的二进制数据向左移两位
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00001100为十进制的12
⑦>>运算(3>>2)既是3的二进制数据向右移两位
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000000为十进制的0
⑧>>>运算(3>>>2)既是3的二进制数据无符号向右移两位
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000000为十进制的0
((-3)>>>2)
11111111 11111111 11111111 11111101 -3的补码
00111111 11111111 11111111 11111111 无符号右移2位。为十进制的1073741823
这个就成为了一个很大的正数了。
10.三目运算
这个平时用得少,但是偶尔出现的时候会导致语法不清楚,其实和if else语句可以对应着来看
变量=条件判断?表达式1:表达式2
if(条件判断){
表达式1
}else{
表达式2
}
11.switch case语句
这里面有一个break;是经常出现的一个坑,如果一个switch语句没有用到break,则会继续执行下一句语句,直到找到下一个break,或者程序走完。
12.break与continue的区别
break是直接退出循环,而continue是跳出本次循环
http://www.zhiliaotang.com 请关注知了堂,在这里汇聚了各种学习型人才,大家拥有不一样的梦,但是却有一样的学习精神.。
【知了堂学习笔记】java 底层容易忽略的知识点的更多相关文章
- 【知了堂学习笔记】java 自定义异常
java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...
- 【知了堂学习笔记】java 编写几种常见排序算法
排序的分类: 一.交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 1.冒泡 ...
- 【知了堂学习笔记】java 接口与抽象类
本次主角:抽象类 .接口. 对于皮皮潇这样一类的Java初学者来说,接口和抽象类如果不去花大量的精力与时间是很难弄清楚的,而我也是在最近这周的项目学习中感觉到了我对这两个概念不熟悉,所以导致对一些问题 ...
- 【知了堂学习笔记】java web 简单的登录
最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...
- 【知了堂学习笔记】java 方法重载与重写的归纳
方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse
一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...
- 【知了堂学习笔记】java 编写几种常见排序算法2
排序的分类: 1.直接选择排序 它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~ ...
- 【知了堂学习笔记】java 正则表达式
本文参考网络上面别人的博客知识产出 正则表达式基础 1.句号 假设你想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束.另外,假设有一本英文字典,你可以用正则表达式搜索它的全部 ...
- 【知了堂学习笔记】java IO流归纳总结
皮皮潇最近学到了IO流但是感觉这一块要记的东西太多了,所以重API上查阅并总结了以下几点关于IO的知识. 1.File(文件类): File类是文件以及文件夹进行封装的对象,用对象的思想来操作文件和文 ...
随机推荐
- MYSQL 在当前时间加上或减去一个时间段
update user set time1=now(),time2=date_add(NOW(), interval 1 MONTH) where id=1; date_add() 增加date_su ...
- 微信 js-sdk
使用方法 http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html Demo http://203.195.235.7 ...
- SHA-1(安全哈希算法实现)
如题,不知道sha-1的自己百度吧. #include <iostream> #include <vector> //定义vector数组 #include <strin ...
- 简单的多对一传输ns2仿真
实验名称:简单的多对一传输仿真 实验目的:1.研究怎么实现多对一传输. 实验步骤: 1.写c++代码并注册报文头. 先说一下多对一传输的方式.最开始,接收端发送控制报文给所有的发送端,告诉他们要发送多 ...
- OI,再见
SDOI2016 因为自己的沙茶犯了低级的沙茶错误而滚粗. day2原可以AK,却因为眼残脑残只拿到90. 由此可见,细节永远不是一个小问题. 想想过去的日子,还真是舍不得. 但过去的终将过去,未来的 ...
- serialize()传值缺失
思路:serialize()获取的是 " & " 拼接的字符串,无法传值,需要拆分后,拼接,生成新字符串,传过去. 例子: var v_idd = $("form ...
- 【leetcode 简单】 第一百四十六题 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1. 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度. 示例 1: 输入: [1,3,2,2,5,2,3,7] ...
- Mysql 关闭自动commit
更多内容推荐微信公众号,欢迎关注: 1. 会话级关闭自动提交 mysql> set autocommit=off; Query OK, 0 rows affected (0.00 sec) my ...
- php empty()与isset()
empty() : 检查一个变量是否为空. 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在.如果变量不存在的话,empty()并不会产生警告. em ...
- css 实现圆形头像
1.方法一 直接设置img为圆形,这种情况下如果图片不是正方形,图片会被拉伸 <img class="circleImg" src="../img/photo/im ...