易错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.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...
随机推荐
- [leetcode 12] Inter to Roman
1 题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range fr ...
- 实验8 LCD8*8点阵
1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 接线: P0接J12.P1接J20.P2接J19 /** 1.控制点阵红绿交替显示,分别从上到下,从左到右循环闪烁三次 **/ #incl ...
- ASP.NET Core开源地址
https://github.com/dotnet/corefx 这个是.net core的 开源项目地址 https://github.com/aspnet 这个下面是asp.net core 框架 ...
- Python 学习第三部分函数——第一章函数基础
函数是python 为了代码最大程度的重用和最小代码冗余而提供的最基本的程序结构.使用它我们可以将复杂的系统分解为可管理的部件. 函数相关语句 def... 创建一个对象并将其赋值给 ...
- C#后台代码获取程序集资源文件
资源会被打包在程序集内部. 选择这种生成方式后,该资源文件会被嵌入到该应用的程序集中,就是说打开生成的应用程序目录是看不到这个文件的. 可以用相对于当前的XAML文件的相对Uri访问,<Imag ...
- 简单线性回归问题的优化(SGD)R语言
本编博客继续分享简单的机器学习的R语言实现. 今天是关于简单的线性回归方程问题的优化问题 常用方法,我们会考虑随机梯度递降,好处是,我们不需要遍历数据集中的所有元素,这样可以大幅度的减少运算量. 具体 ...
- Python-WSGI协议如何实现?
简述浏览器通过WSGI 请求动态资源的过程? 发送 http 请求动态资源给 web 服务器 web 服务器收到请求后通过 WSGI 调用一个属性给应用程序框架 应用程序框架通过引用 WSGI 调用 ...
- postgresql和redis
redis 和postgresql区别以及其优缺点 一刹那者为一念,二十念为一瞬,二十瞬为一弹指,二十弹指为一罗预,二十罗预为一须臾,一日一夜有三十须臾. 那么,经过周密的计算,一瞬间为0.36 秒, ...
- psutil 跨平台根据程序名杀进程
笔者在项目中遇到过需要根据进程名杀进程的需求,利用python库psutil实现了此功能. 模块地址: https://pypi.python.org/pypi/psutil/ psutil功能 ...
- Python--CSV模块
CSV csv文件格式是一种通用的电子表格和数据库导入导出格式 简介 Python csv模块封装了常用的功能,使用的简单例子如下: 写入 # 写入csv文件 import csv csvfile = ...