Java基础(一)——2019/12/19

Java基础(一)——2019/12/19

  • Java中如何支持正则表达式操作

Java中的String类提供了支持正则表达式操作的方法:matches()、 replaceAll()、split()等。此外,Java还提供了Pattern类和Matcher类来支持正则表达式操作。

  • 简单描述一下正则表达式的用途

我们在处理编写处理字符串的程序时,常常需要依据某种模式(pattern)对字符串进行一定的操作:查询、剪切、替换等,正则表达式正是我们用来定义模式(pattern)的强大工具。绝大多数语言均支持正则表达式。

  • 比较一下Java和JavaScript
  • Java:面向对象、编译性语言、强类型语言
  • JavaScript:基于对象和事件驱动、解释型语言、弱类型语言
  • 编程语言的分类
分类标准 类别 特征 优点 缺点 代表语言
程序执行方式 编译型语言 需要通过编译器将源代码编译成机器码,
然后才能执行的语言
性能较高 修改程序时需要重新编译,可移植性较差 C、C++
解释型语言 源代码不需要编译,
在执行的时候逐行翻译
跨平台(前提是安装了解释器)、可以快速部署 性能较差 JavaScript、Python、PHP
混合型语言 混合型语言也叫做半编译型语言,源代码先被编译成中间码,
执行时由JIT执行中间码
可移植性强 性能中等 Java、C#
对数据类型检查的时间 动态类型语言 在运行时确定数据类型,
不需要类型声明,变量的类型通常为被赋值的值的类型
Python、JavaScript、PHP、swift
静态类型语言 在编译时确定数据类型,
需要声明数据类型
C、C++、C#、Java
对数据类型的处理方式 强类型语言 当一个变量被定义成某种类型,如果不进行强制类型转换(显示转换),其类型不会改变。 运行效率较高、内存利用率较高 Java、C#、Python
弱类型语言 数据类型可以被忽略,一个变量可以赋不同数据类型的值。
给一个整型变量a赋一个字符串值,那么a就变成字符类型。
运行效率较低(存在隐式类型转换)、
内存利用率较低(考虑通用性而多分配内存)、
对数据类型的检测力度不够
JavaScript、PHP
  • Attentions
  1. JIT:Just-In-Time Compiler,即时编译器,将Java字节码转换成机器码。
  2. V8引擎:V8引擎被设计用来提高浏览器执行JavaScript的性能,V8引擎会将js代码转换成机器码(不同于中间码),而不是依赖解释器执行js代码。
  3. 通常情况下解释型语言是动态类型语言、编译型语言是静态类型语言。
  4. C和C++虽然能过隐式类型转换,但也是编译器通过调用相应的类型转换函数完成的,C和C++是强类型语言。
  • Java中如何跳出多重嵌套循环

首先嵌套循环的深度不宜过深,超过3层就要考虑是否能够选择其他的方式或者对代码进行重构。可以在循环外部设置flag,然后通过修改flag的值来控制是否跳出嵌套循环。

  • &和&&的区别

&(按位与)、&&(逻辑与),需要注意的是&不支持短路,&&支持短路。所以在大多数逻辑判断中应该使用&&而不是&,否则程序会崩溃,当然在进行位运算时只能使用&。
比如:username != null && !username.equal("")如果写成username != null & !username.equal("")在username为null时就会出现空指针异常。

  • int和Integer有什么区别

int是基本数据类型,Integer是引用数据类型,是int的包装类(wrapper class)。Java为每个基本数据类型都引入了对应的包装类型,从Java5开始引入了自动装箱/拆箱机制,使得两者之间可以自动转换。

  • String是否属于基本数据类型

Java中的基本数据类型只有:byte、char、short、int、long、float、double、boolean,其他数据类型均为引用数据类型。

  • String、StringBuilder与StringBuffer
类型 特征 适用场景
String 字符串常量,一旦创建便不可修改。
对String类型的变量进行赋值操作时,会创建新的String对象,
并将指针指向新的String对象。
所以当创建的临时String对象过多时,JVM的GC便会开始工作,
相应地程序的性能便会下降。
只涉及少量的字符串操作
StringBuilder 使用StringBuilder对字符串进行操作时不会产生临时的String对象,
线程不安全。
单线程字符缓冲区的大量操作
StringBuffer 类似于StringBuilder,但是StringBuffer是线程安全的。 多线程字符缓冲区的大量操作(通过synchronized实现线程安全)

猜你喜欢

转载自blog.csdn.net/a16302010048/article/details/103613443