##面试题
1.计算机发展史
java特点:
开源:源代码开放
跨平台:由于各平台有差异性,Java由JVM对源程序进行解释执行,一次编译到处运行
java三大版本
- JavaSE标准版
- JavaME移动版
- JavaEE企业版
DJK:java development kit Java开发工具
JRE:java runtime environment java运行环境
JVM:Java虚拟机
2.JDK下载安装+环境变量的配置+检验是否安装成功
jdk下载安装:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- 选择版本(我们采用JDK8)
- 同意协议(流氓协议)
- 查看电脑的环境(64位,还是32位等等)
- 下载安装包
- 安装JDK ,JRE (改安装目录,注意规范,作为一个程序人,规范很重要。所以给电脑上环境单独分类最好,) 傻瓜式安装,记得更改路径
- 环境变量的配置:JAVA_HOME:%jdk下载路径,bind的上层路径%\bin path:%JAVA_HOME%\bin;%JAVA_HOME%\jar\bin;
- Java -version 或者 javac,如果运行出java的版本就说明运行成功
3.HelloWorld编译以及运行
public class HelloWorld{
public static void main(String[] args){
system.out.println("你好,世界!");
}
}
保存文件,打开命令行,利用javac编译!
javac HelloWorld.java
# 如果没有报错,查看文件夹下是否有新的一个文件
# Hello.class
# 如果没有出现,恭喜!说明你遇到了你在学Java当中的第一个Bug
DOS命令窗口
java 执行!
java HelloWorld
# 成功输出Hello,World!
如果出现错误,检查字母大小写是否有错误,或者是否标点符号错误,文件名错误等等,一定要确保成功输出,我们之后再来研究,它是怎么输出的!
下载 安装IDEA
- 官方网站:https://www.jetbrains.com/
- idea破解版下载地址
链接:https://pan.baidu.com/s/1_9CDV4jL3BTzi6omT79ulQ
提取码:xmxq
官方下载地址:http://www.jetbrains.com/idea/download/#section=wind
- 安装步骤
- 直接安装完成
- 下载破解补丁:http://idea.lanyus.com/
- 得到 JetbrainsCrack-2.6.10-release-enc.jar 我们重命名去掉 -release-enc 然后放在idea安装目录的bin文件夹下
- 在IDEA安装目录bin目录里找到 idea.exe.vmoptions 和 idea64.exe.vmoptions 两个文件打开,在最后一行添加 - javaagent:D:IDEAIntelliJ IDEA 2017.2.5binJetbrainsCrack-2.6.10.jar
- 打开IDEA激活码填 写
ThisCrackLicenseId-{
"licenseId":"ThisCrackLicenseId",
"licenseeName":"idea",
"assigneeName":"kuangshen",
"assigneeEmail":"24736743@qq.com",
"licenseRestriction":"For This Crack, Only Test! Please support genuine!!!",
"checkConcurrentUse":false,
"products":[
{"code":"II","paidUpTo":"2099-12-31"},
{"code":"DM","paidUpTo":"2099-12-31"},
{"code":"AC","paidUpTo":"2099-12-31"},
{"code":"RS0","paidUpTo":"2099-12-31"},
{"code":"WS","paidUpTo":"2099-12-31"},
{"code":"DPN","paidUpTo":"2099-12-31"},
{"code":"RC","paidUpTo":"2099-12-31"},
{"code":"PS","paidUpTo":"2099-12-31"},
{"code":"DC","paidUpTo":"2099-12-31"},
{"code":"RM","paidUpTo":"2099-12-31"},
{"code":"CL","paidUpTo":"2099-12-31"},
{"code":"PC","paidUpTo":"2099-12-31"}
],
"hash":"2911276/0",
"gracePeriodDays":7,
"autoProlongated":false
}
a.复制汉化文件到lib : (汉化有BUG,不建议大家汉化,顺便也能提高英语水平!)
b.IDEA优化配置参考 : https://jingyan.baidu.com/article/dca1fa6f6af95af1a540527d.html
调节字体
鼠标滚动大小
注释颜色
字符编码设置
常用快捷键
项目属性浏览
c.利用IDEA编写HelloWorld!查看控制台输出结果!
注释
//单行注释
/*多行注释*/
/**文档注释,用于生产API文档,配合JavaDoc*/
常量的概述和使用
A:什么是常量
就是在程序的执行过程中其值不发生改变的量。
B:Java中常量的分类
(1):字面值常量
(2):自定义常量(面向对象部分讲解)
C:字面值常量的分类
(1): 字符串常量 用双引号括起来的内容 "HelloWorld" ,"Hello"
(2): 整数常量 所有整数 12,23
(3): 小数常量 所有小数 12.34,56.78
(4): 字符常量 用单引号括起来的内容 'a','A','0' (注意事项:单引号中只能是单个字母,单个数字,单个符号)
(5): 布尔常量 较为特有,只有true和false
(6): 空常量 null(数组部分讲解)
标识符
标识符==姓名
标识符命名注意事项:
不可以用关键字命名
不可以纯数字或数字开头
特殊字符只能用$和_
区分大小写
可以使用中文名命名,但是不建议
标识符常见的命名规则:
包:全是小写字母
类或接口:第一个单词的首字母大写,其余单词遵循驼峰式
方法或者变量:第一个单词的字母全小写,其余单词遵循驼峰式
常量:单词全大写,多个单词之间用_隔开
数据类型:
强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言·
public static void main(String[] args) {
//整型
int i1=100;
//长整型 要记得后面加L
long i2=998877665544332211L;
//短整型
short i3=235;
//浮点型
double d1=3.5; //双精度
double d2=3;
float f1=(float)3.5; //单精度
float f2=3.5f; //单精度 要记得后面加f
//布尔类型 boolean true真/false假
boolean isPass=true;
boolean isOk=false;
boolean isBig=5>8;
if(isPass){
System.out.println("通过了");
}else{
System.out.println("未通过");
}
//单字符
char f='女';
char m='男';
}
不同进制的表现形式
A:二进制的数据表现形式
由0,1组成。 以0b开头(1.7版本开始的,b可大写)
B:八进制的数据表现形式
由0,1,…7组成。 以0开头
C:十进制的数据表现形式
由0,1,…9组成。 整数默认是十进制的
D:十六进制的数据表现形式
由0,1,…9,a,b,c,d,e,f(大小写均可)。 以0x开头(x可大写)
数据类型转换之隐式转换
(1): boolean类型不能转换为其他的数据类型
(2): byte,short,char—int—long—float—double
(3): byte,short,char之间不转换,他们参与运算首先转换为int类型
数据类型转换之强制转换
A:强制类型转换,又被称为造型,用于显式的转换一个数值的类型.
B:强制转换的格式
目标数据类型 变量名=(目标数据类型)(被转换的数据);
C:强制转换的注意事项
尽量不要使用强制类型转化,因为可能存在损失精度的问题。
在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
演示:
double x = 3.14;
int nx = (int)x; //值为3
char c = 'a';
int d = c+1;
System.out.println(d); //98
System.out.println((char)d); //b
}
当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。
int x = 300;
byte bx = (byte)x; //值为44
System.out.println(bx);
}
案例演示
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。
所以,Java中的字符可以存储一个中文汉字
常见错误和问题
操作比较大的数时,要留意是否溢出,尤其是整数操作时;
public static void main(String[] args) {
int money = 1000000000; //10亿
int years = 20;
int total = money*years; //返回的是负数
long total1 = money*years; //返回的仍然是负数。默认是int,因此结果会转成int值,再转成long。但是已经发生了数据丢失
long total2 = money*((long)years); //先将一个因子变成long,整个表达式发生提升。全部用long来计算。
System.out.println(total);
System.out.println(total1);
System.out.println(total2);
}
L和l 的问题:
不要命名名字为l的变量
long类型使用大写L不要用小写。
public static void main(String[] args) {
int l = 2;
long a = 23451l;
System.out.println(l+1); //3
System.out.println(a); //23451
}