企业真题(Java语言概述一)

img# 第01章:随堂复习与企业真题(Java语言概述)


一、随堂复习

1. Java基础全程的学习内容

第1阶段:Java基本语法
> Java概述、关键字、标识符、变量、运算符、流程控制(条件判断、选择结构、循环结构)、IDEA、数组

第2阶段:Java面向对象编程
> 类及类的内部成员
> 面向对象的三大特征
> 其它关键字的使用

第3阶段:Java语言的高级应用
> 异常处理、多线程、IO流、集合框架、反射、网络编程、新特性、其它常用的API等

神书:《Java核心技术》、《Effective Java》、《Java编程思想》

2. 软件开发相关内容

2.1 计算机的构成

硬件 + 软件

2.2 软件

软件,即一系列按照特定顺序组织的计算机数据指令的集合。有系统软件应用软件之分。

  • 系统软件,即操作系统,windows、Mac os 、linux、android、ios
  • 应用软件,即os之上的应用程序。
2.3 人机交互方式
  • 图形化界面(GUI)
  • 命令行交互方式(CLI)
    • 熟悉常用的dos命令:dir 、 cd 、cd… 、 cd/ cd\ 、md、rd等
2.4 计算机编程语言
  • 语言的分代:

    • 第1代:机器语言
    • 第2代:汇编语言
    • 第3代:高级语言
      • 面向过程的语言:C
      • 面向对象的语言:C++、Java、C#、Python、Go、JavaScript
  • 没有“最好”的语言,只有在特定场景下相对来说,最适合的语言而已。

3. Java概述

3.1 Java发展史
  • 几个重要的版本:1996年,发布JDK1.0; 里程碑式的版本:JDK5.0、JDK8.0(2014年发布)

    ​ JDK11(LTS)、JDK17(LTS)long term support

3.2 Java 之父

詹姆斯·高斯林

3.3 Java具体的平台划分

J2SE —>JavaSE

J2EE ---->JavaEE

J2ME —> JavaME

Java目前主要的应用场景:JavaEE后台开发、Android客户端的开发、大数据的开发

4. Java环境的搭建

  • JDK、JRE、JVM三者之间的关系
  • JDK的下载(官网)
  • JDK的安装
    • 安装jdk8 和 jdk17
  • 环境变量的配置(重要)

5. HelloWorld的编写和常见问题的解决(重点)

  • 第1个程序
class HelloChina{
	public static void main(String[] args){
		System.out.println("hello,world!!你好,中国!");
		System.out.print("hello,world!!你好,中国!");
		System.out.println("123abc");
		System.out.println(123 + 1);
	}
}
  • 测试程序
public class HelloJava{
	public static void main(String[] args){
		System.out.println("hello");
		System.out.println(10/0);
	}
}


class HelloShangHai{

}

class HelloBeijing{

}


  • 小结

总结:
1. Java程序编写和执行的过程:
步骤1:编写。将Java代码编写在.java结尾的源文件中
步骤2:编译。针对于.java结尾的源文件进行编译操作。 格式:javac 源文件名.java
步骤3:运行。针对于编译后生成的字节码文件,进行解释运行。 格式: java 字节码文件名


2. 针对于步骤1的编写进行说明。

class HelloChina{
	public static void main(String[] args){
		System.out.println("hello,world!!你好,中国!");
	}
}

其中,
① class:关键字,表示"类",后面跟着类名。
② main()方法的格式是固定的。务必记住!表示程序的入口
  public static void main(String[] args)  

如果非要有些变化的话,只能变化String[] args结构。可以写成:方式1:String args[]   方式2:String[] a

args:全程是arguments,简写成args

③ Java程序,是严格区分大小写的。

④ 从控制台输出数据的操作:
System.out.println() : 输出数据之后,会换行。
System.out.print() : 输出数据之后,不会换行。


⑤ 每一行执行语句必须以;结束。


3. 针对于步骤2的编译进行说明。

① 如果编译不通过。可以考虑的问题:
问题1:查看编译的文件名、文件路径是否书写错误
问题2:查看代码中是否存在语法问题。如果存在,就可能导致编译不通过。

② 编译以后,会生成1个或多个字节码文件。每一个字节码文件对应一个Java类,并且字节码文件名与类名相同。


4. 针对于步骤3运行进行说明。

① 我们是针对于字节码文件对应的Java类进行解释运行的。
要注意区分大小写!

② 如果运行不通过。可以考虑的问题:
问题1:查看解释运行的的类名、字节码文件路径是否书写错误
问题2:可能存在运行时异常。(放到第9章中具体讲解)


5. 一个源文件中可以声明多个类,但是最多只能有一个类使用public进行声明。
且要求声明为public的类的类名与源文件名相同。

6. 注释的使用


/*
这是多行注释。

我们可以声明多行注释的信息!


1. Java中的注释的种类:
单行注释 、 多行注释 、 文档注释(Java特有)

2. 单行注释、多行注释的作用:
① 对程序中的代码进行解释说明
② 对程序进行调试

3. 注意:
① 单行注释和多行注释中声明的信息,不参与编译。换句话说,编译以后声明的字节码文件中不包含单行注释和
多行注释中的信息。
② 多行注释不能嵌套使用

4. 文档注释:
文档注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

*/
/**
这是我的第一个Java程序。很开森!^_^

@author shkstart
@version 1.0

*/
public class CommentTest{
	/**
	这是main()方法。格式是固定的。(文档注释)
	*/
	/*
	这是main()方法。格式是固定的。(多行注释)
	*/
	public static void main(String[] args){
		//这是输出语句
		System.out.println("hello,world!!");
		//System.out.println("hello,world!!")
	}
}

7. API文档

8. 练习

  • 练习1
class PersonalInfo{
	public static void main(String[] args) {
	    System.out.println("姓名:康师傅");
		System.out.println(); //换行的操作
		System.out.println("性别:男");
		System.out.println("家庭住址:北京程序员聚集地:回龙观");
	}
}

  • 练习2
class StarPrintTest {
	public static void main(String[] args) {
		System.out.println("*    *");
		System.out.println("*\t\t*");
		System.out.println("*\n\n*");
	}
}

```## 二、企业真题

### 1. 高效的方式计算2 * 8的值 (文\*\*辉、轮*科技)

使用 << 

### 2. &&&的区别?(恒\*电子、\*)

1.运算符性质不同。

&是一个位运算符。

&&是一个逻辑运算符。

2.作用不同。

&是将两个二进制的数逐位相与,结果是相与之后的结果。

&&就是判断两个表达式的真假性,只有两个表达式同时为真才为真,有一个为假则为假,具有短路性质。

3.用途限制。

&除了是一个位运算符,也是取地址符。

&&就是一个单纯的逻辑运算符,没有任何其他含义。

### 3. Java中的基本类型有哪些?String 是最基本的数据类型吗?(*电子)

8种基本数据类型。int long char double boolean float  short byte 

String不是,属于引用数据类型。

### 4. Java中的基本数据类型包括哪些?(*米)

类似问题:

Java的基础数据类型有哪些?String是吗?(贝壳)


int long char double boolean float  short byte 

### 5. Java开发中计算金额时使用什么数据类型?(5*到家)

不能使用float或double,因为精度不高。

使用BigDecimal类替换,可以实现任意精度的数据的运算。

### 6. char型变量中能不能存储一个中文汉字,为什么?(*通快递)

可以的。char c1 = '中';

char c2 = 'a'。

因为char使用的是unicode字符集,包含了世界范围的所有的字符。

### 7. 代码分析(君\*科技、新\*陆)

```java
short s1=1; 
s1=s1+1;  //有什么错?  =右边是int类型。需要强转
short s1=1;
s1+=1; //有什么错?   没错

8. int i=0; i=i++执行这两句化后变量 i 的值为(*软)

0。

9. 如何将两个变量的值互换(北京*彩、中外*译咨询)

String s1 = "abc";
String s2 = "123";

String temp = s1;
s1 = s2;
s2 = temp;

10. boolean 占几个字节(阿**巴)

编译时不谈占几个字节。

但是JVM在给boolean类型分配内存空间时,boolean类型的变量占据一个槽位(slot,等于4个字节)。
细节:true:1  false:0

>拓展:在内存中,byte\short\char\boolean\int\float : 占用1个slot
              double\long :占用2个slot

11. 为什么Java中0.1 + 0.2结果不是0.3?(字*跳动)

在代码中测试0.1 + 0.2,你会惊讶的发现,结果不是0.3,而是0.3000……4。这是为什么?

几乎所有现代的编程语言都会遇到上述问题,包括 JavaScript、Ruby、Python、Swift 和 Go 等。引发这个问题的原因是,它们都采用了IEEE 754标准

IEEE是指“电气与电子工程师协会”,其在1985年发布了一个IEEE 754计算标准,根据这个标准,小数的二进制表达能够有最大的精度上限提升。但无论如何,物理边界是突破不了的,它仍然不能实现“每一个十进制小数,都对应一个二进制小数”。正因如此,产生了0.1 + 0.2不等于0.3的问题。

具体的:

整数变为二进制,能够做到“每个十进制整数都有对应的二进制数”,比如数字3,二进制就是11;再比如,数字43就是二进制101011,这个毫无争议。

对于小数,并不能做到“每个小数都有对应的二进制数字”。举例来说,二进制小数0.0001表示十进制数0.0625 (至于它是如何计算的,不用深究);二进制小数0.0010表示十进制数0.125;二进制小数0.0011表示十进制数0.1875。看,对于四位的二进制小数,二进制小数虽然是连贯的,但是十进制小数却不是连贯的。比如,你无法用四位二进制小数的形式表示0.125 ~ 0.1875之间的十进制小数。

所以在编程中,遇见小数判断相等情况,比如开发银行、交易等系统,可以采用四舍五入或者“同乘同除”等方式进行验证,避免上述问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值