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知识点总结(持续更新)的更多相关文章

  1. C++笔试易错题集(持续更新)

    1.如下代码输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> char *myString() {     ...

  2. C#、Java中的一些小知识点总结(持续更新......)

    前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...

  3. 零散知识点总结(持续更新……)

        这篇博客用于记录平时学习中遇到的零散的知识点,它们不适于单独写一篇长博客,在这里记录下来一是为了增强记忆,二是为了方便复习总结.这篇博客会持续更新... 一.JS数据类型及类型判断 1. JS ...

  4. Java名词术语---持续更新

    在看技术文档的过程中,经常会出现新的java缩写术语,很多时候都不知道它们是什么,在这里记下,持续更新. ——————————————————————————————————————————————— ...

  5. 你必须知道的----C语言笔试面试中经典易错的一些知识点(持续更新)

    1. 关于二级指针的解析和引用 1.1  二级指针意义  二级指针存放的是一级指针的地址    Ex: Int a = ; Int *p = &a; Int **q = &p; 1.2 ...

  6. java易错基础知识点

    一. Switch 1.其能接受的数据类型有四个,char , byte, short, int2.Default 可放在switch中的任何一个地方,但只有给定的条件匹配不到时,才会执行3.Case ...

  7. 2019春招面试高频题(Java版),持续更新(答案来自互联网)

    第一模块--并发与多线程 Java多线程方法: 实现Runnable接口, 继承thread类, 使用线程池 操作系统层面的进程与线程(对JAVA多线程和高并发有了解吗?) 计算机资源=存储资源+计算 ...

  8. Android 小知识点(持续更新)

    ①文件保存默认是private权限. ②在layout的xml文件中onClick的方法中包含一个View类型的参数 ③获取项目下files路径:Context.getFilesDir(); ④获取项 ...

  9. C# 知识点记录(持续更新中)

    从看C#入门经典开始系统的学习C#,本文主要记录学习过程中的一些知识点,也是我博客生涯的开始,比较重要成体系的部分会单重新写文章整理归纳. 1.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...

随机推荐

  1. Java学习--基本数据类型的定义和运算

    例1: public class DataDemo05{ public static void main(String args[]){ char ch1 = '\"' ; // 表示的是一 ...

  2. Asp.Net Core探索 之 appsettings.json

    appsettings.json是什么? 相信大家在.Net Framework的项目都会用的web.config,app.config这些文件,appsettings.json文件就是Asp.Net ...

  3. Python运维脚本整理

    Python 实现的自动化服务器管理 import sys import os import paramiko ssh = paramiko.SSHClient() ssh.set_missing_h ...

  4. BZOJ 2200--[Usaco2011 Jan]道路和航线(最短路&拓扑排序)

    2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1128  Solved: 414[Submit] ...

  5. nginx官方文档 之 http负载均衡 学习笔记

    一.负载均衡 算法 大致可以分两类: (1)不能保证用户的每一次请求都通过负载均衡到达同一服务器. (2)可保证用户的每一次请求都通过负载均衡到达同一服务器. 第二类的应用场景: 1.如果服务器有缓存 ...

  6. 使用pymysql

    安装 pip3 install pymysql 连接.执行sql.关闭(游标) import pymysql mysql_connect_dict={ 'host':'127.0.0.1', 'por ...

  7. IntelliJ IDEA中Debug的使用技巧

    当运行结果跟我们设想的不一致时,我们就可以用debug进行代码调试,下面是我在日常开发中对debug的一些小结 (一)基本介绍 本篇文章是基于IntelliJ IDEA2018.3.2版本,Debug ...

  8. WebDriver高级应用实例(9)

    9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ...

  9. [原创]内网渗透JSP webSehll连接工具

    工具: JspShellExec编译: VS2012  C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...

  10. (转)Cognos的下载地址分享

    原文:https://blog.csdn.net/Wikey_Zhang/article/details/76138965 刚开始接触Cognos,发现Cognos真是一款挺不错的报表工具,先分享一下 ...