1.标识符
标识符由字符、下划线、美元符号和数字组成,长度不受限制,第一个字符不能是数字,标识符不能是关键字,也不能是null、false、true等非关键子。它是严格区分大小写的。
2.常量与变量
3.数据类型
8种基本数据类型,
逻辑:boolean 整数类型:byte short int long 字符类型:char, 浮点类型:float,double.
4.运算符
+ - ,-- ,++
5.流程控制语句
if else
while
for
switch:支持类型有byte short int char,String.
6.方法
7.数组。
声明数组,数组名.length获得长度。
8.注释
9.java与PHP的区别
PHP暂时还不支持性java那样JIT运行时编译热点代码,但是PHP具有opcache机制
PHP函数库用C语言实现,Java的核心运行时类库(JDK/JRE/LIB/rt.jar,大于60MB)用Java编写,所以java运行时的时候,用户编写的代码以及引用的类库和框架都在JVM上解释执行。PHP内置模板引擎,自身就是模板语言。而java web 需要使用JSP容器如Tomcat或第三方模板引擎。
Java多线程编程需要Java开发者编码参与,而PHP不用。
10.Java是如何支持正则表达式的:
Java中的String类提供了支持正则表达式操作的方法,包括:matches(),replaceAll(),replaceFirst(),split().除此之外,java可以用Patten类表达正则表达式对象,它提供了丰富的API进行各种正则表达式操作。如:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class First {
public static void main(String[] args){
String string="one(tow)(three)";
Pattern pattern=Pattern.compile(".*?(?=\\()");
Matcher matcher= pattern.matcher(string);
if(matcher.find()){
System.out.println(matcher.group());
}
}
}
11.简述正则表达式及用途:
在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话来说,正则表达式就是记录文本规则的代码。计算机处理的信息更多的时候不是数值而是字符串,正则表达式就是在进行字符串匹配和处理的时候最为强大的工具,绝大多数语言都提供了对正则表达式的支持。
12.java和javascript的比较:
两个公司开发的不同的两个产品。java是sun公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发:而javaScript是Netscape公司的产品,为了扩展NetScape浏览器的功能而开发的一种可以嵌入WEB页面中运行的基于对象和事件驱动的解释性语言。
基于对象和面向对象:JAVA是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JAVAScript是一种基于对象和事件驱动的编程语言,因而它本身提供了非常丰富的内部对象供设计人员使用。
解释和编译:Java的源代码在实行之前,必须经过编译。JavaScript是一种解释性编程语言,其源代码不需要编译,由浏览器解释运行。
强类型变量和弱类型变量:Java采用强类型变量检查,即所有变量在编译之前必须声明;JavaScript中变量时弱类型的,甚至在使用变量前可以不作声明,JavaScript的解释器在运行时检查推断其数据类型。
代码格式不一样。
13如何当用 break语句。前的多重使
14.& 和&&的区别:
&按位与,虽然两者都要求运算符左右两端的布尔值都是true。整个表达式才是true。
&&(逻辑与)当左边的表达式的值是false时,右边短路,不会运算,很多时候运用它。
15.int与Integer有什么区别
int的包装类就是Integer,从java5就引入自动装箱和自动拆箱机制,使得两者可以相互装换。
16.如何输出一种某种编码的字符串
String s=new String(str.getBytes("iso-88590-1),('utf-8");//使用getBytes方法。
17.String和StringBuffer的区别:
JAVA平台提供了两个类:String 和StringBuffer,它们可以存储和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你直达字符数据要改变的时候你就可以使用StringBuffer.典型地,你可以使用StirngBuffers来动态构造字符数据。
18.请说明String是最基本的数据类型吗?
Java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。
20.Array与ArrayList的不同点:
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
对于基本类型数据,集合使用自动装箱来减少编码工作量,但是,当处理固定大小的基本数据类型的时候,这种方式相对慢。
21.值传递和引用传递
值传递:对于基本类型而言的,传递的是该变量的一个副本,改变副本不影响原变量。
引用传递:一般对于对象型而言的,传递的是该对象地址的一个副本,并不是原对象本身。所以对引用对象进行操作会同时改变原对象。一般认为java内都是值传递。
22.什么是自动装箱
自动装箱时java编译器在基本类型和对应的对象包装类型之间做的一个转化。比如把int转化成Integer,double转化为Double,等等,繁殖就是自动拆箱。
23.为什么4.0-3.6=0.400001这种现象
原因很简单:2进制的小树无法精确的表达式10进制小树,计算机咋计算10进制小数的过程中要先转化为2进制进行计算,这个过程中出现了误差。
24.10进制的数在内存中怎样存:补码的形式。
25==符比较的是什么
==对比两个对象基于内存的引用,如果连个对象的引用完全相同(指向同一个对象)时,“==”操作将返回true,否则返回false。“==”如果两边是基本类型,就比较数值是否相等。
26.如果Object若不重写hashCode()的话,hasjCode()如何计算出来的
Object的hashcode方法是本地方法,也即是用C语言或C++实现的,该方法直接返回对象的内存地址。
27.为什么哟啊重写equals还要重写hashcode?
HashMap中,如果要比较key是否相等,要同时使用这两个函数!因为自定义的类的hashcode()方法继承与Object类,器hashcode 码默认的内存地址,这个即使哟相同含义的两个对象,比较也是不相等的。hashMap中比较的key是这样的,先求出key的hashcode()比较其值是否相等,若相等在比较equals(),若相等则认为他们是相等的,若equals()不相等则认为他们不行等。如果只重写hashcode()不重写equas()方法,当比较equals()时知识看他们是否为同一个对象(即进行内存地址的比较)看,所以必定要两个方法一起重写
28.fianl关键字
当修饰一个类时:他是不能被继承的。
当修饰变量时:基本类型则表示一旦在初始化之后就不能修改,变成常量了,引用型则表示初始化便不能再让其指向另一个对象。
用final修饰的原因有两个:1.把方法锁定,一防止任何继承的类修改它的含义;第二个原因是效率。