易错java知识点总结(持续更新)
1.
2.java转义字符的理解
参考知乎大神:http://www.zhihu.com/question/29232624
正向和逆向处理转义字符
正向:把两个字符 \ n 识别为一个转义字符 new line
逆向:把一个字符 new line 识别为一个需要转义的字符,输出两个字符 \ n
package 转义zifu; public class a { public static void main(String[] args) {
String b = "test line 1\ntest line 2\ntest line 3";
char[] c;
c=b.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\\')
System.out.println("yes");
} } }
结果是什么也没有显示
这样当然找不到任何转义字符,因为在在源码里的\n字面量(两个字符)都已经被编译器正向处理过一次变成了new line(一个LF字符),所以a里已经没有任何'\'字符了。
但测试不应该这么测。如果我们要写一个编译器,它通常要从源码文件读入原始文本。如果源码文件里出现了这样的字符串:
test line 1\ntest line 2\ntest line 3
那我们要在一个小测试程序里模拟这个输入的话,应该写:
"test line 1\\ntest line 2\\ntest line 3"
这样得到的字符串才跟源码文件里的原始文本一致。其实就是人肉逆向处理一次来对抗编译器做的那一次正向处理。
假设是逆向:
总共只有那么多个字符需要转义。查语言规范把所有需要转义的字符放进一个表里匹配一下就好。
package 转义zifu; public class a { public static void main(String[] args) {
String b = "test line 1\\ntest line 2\\ntest line 3";
char[] c;
c=b.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == '\\')
System.out.println("yes");
} } }
结果显示为:
yes
yes
JAVA中转义字符:
1.特殊字符:就3个
\":双引号
\':单引号
\\:反斜线
2.控制字符:5个
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
说白了,在java中\后面只能跟\'"bntfr这八个字符,其余的都会报错,同时,注意与正则表达式的结合.其余就是处理正向和逆向处理转义字符了。
易错java知识点总结(持续更新)的更多相关文章
- C++笔试易错题集(持续更新)
1.如下代码输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> char *myString() { ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- 零散知识点总结(持续更新……)
这篇博客用于记录平时学习中遇到的零散的知识点,它们不适于单独写一篇长博客,在这里记录下来一是为了增强记忆,二是为了方便复习总结.这篇博客会持续更新... 一.JS数据类型及类型判断 1. JS ...
- Java名词术语---持续更新
在看技术文档的过程中,经常会出现新的java缩写术语,很多时候都不知道它们是什么,在这里记下,持续更新. ——————————————————————————————————————————————— ...
- 你必须知道的----C语言笔试面试中经典易错的一些知识点(持续更新)
1. 关于二级指针的解析和引用 1.1 二级指针意义 二级指针存放的是一级指针的地址 Ex: Int a = ; Int *p = &a; Int **q = &p; 1.2 ...
- java易错基础知识点
一. Switch 1.其能接受的数据类型有四个,char , byte, short, int2.Default 可放在switch中的任何一个地方,但只有给定的条件匹配不到时,才会执行3.Case ...
- 2019春招面试高频题(Java版),持续更新(答案来自互联网)
第一模块--并发与多线程 Java多线程方法: 实现Runnable接口, 继承thread类, 使用线程池 操作系统层面的进程与线程(对JAVA多线程和高并发有了解吗?) 计算机资源=存储资源+计算 ...
- Android 小知识点(持续更新)
①文件保存默认是private权限. ②在layout的xml文件中onClick的方法中包含一个View类型的参数 ③获取项目下files路径:Context.getFilesDir(); ④获取项 ...
- C# 知识点记录(持续更新中)
从看C#入门经典开始系统的学习C#,本文主要记录学习过程中的一些知识点,也是我博客生涯的开始,比较重要成体系的部分会单重新写文章整理归纳. 1.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...
随机推荐
- Git 安装 windows && linux
一.安装: windows下安装Git: 1.下载Git:https://git-scm.com/download/win 2.安装Git:默认安装,一直回车 Linux下安装Git: yum安装: ...
- EBS-如何查看非自己提交的请求的结果
http://www.cnblogs.com/quanweiru/p/4692071.html 如何查看非自己提交的请求的结果定位要找的请求SQL举例:SELECT req.request_id, ...
- .NET高级代码审计(第三课)Fastjson反序列化漏洞
0X00 前言 Java中的Fastjson曾经爆出了多个反序列化漏洞和Bypass版本,而在.Net领域也有一个Fastjson的库,作者官宣这是一个读写Json效率最高的的.Net 组件,使用内置 ...
- 用一个应用场景理解ASP.NET Core Identity是什么?
目录 前言 基于声明的认证(Claims-based Authentication) 应用场景一 在ASP.NET Core 中Identity是如何实现的 类ClaimsPrincipal 考察另外 ...
- Spring AOP 源码分析系列文章导读
1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...
- Linux高级文件系统管理(8)
如果您的 Linux 服务器有多个用户经常存取数据时,为了维护所有使用者在硬盘容量的公平使用,磁碟配额 (Quota) 就是一项非常有用的工具,另外,如果你的用户常常抱怨磁盘容量不够用,那么更进阶的文 ...
- Dubbo实现原理之基于SPI思想实现Dubbo内核
dubbo中SPI接口的定义如下: @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public ...
- 社会地位即服务, Status as a Service (二): 社交网络的投资回报率 (ROI)
本文作者 Eugene Wei 是 Amazon 战略部门的第一位分析师,后来还担任过 Flipboard, Hulu, Oculus 的产品负责人. 原文标题是 Status as a Servic ...
- CENTOS安装ElasticSearch(转)
From: https://my.oschina.net/topeagle/blog/591451?fromerr=mzOr2qzZ CENTOS安装ElasticSearch ElasticSear ...
- webgl之五彩光源
一.Three.js中有哪些光源? 在Three.js中,光源有一个基类THREE.Light(hex),这个hex接受16进制颜色作为参数而初始化光源的颜色,比如我们要定义一种绿色的光源,可以这样来 ...