感想

不知不觉已经工作一年半,回想这些日子每天都只关注于工作,对于很多基础的基础知识和概念都渐渐模糊,提起这些概念的时候很熟悉,但又不知从何说起。于是乎,决定从头开始温习一遍。
忽然发现作为一名程序员,就算每天工作再忙也不能忘记充实自己,一旦陷于安逸之中,很多能力都会慢慢荒废,以至于被社会嫌弃,一旦如此,你就会开始被所有人嫌弃,慢慢陷入自闭,整个人都要抑郁。
哈哈哈哈哈,下面开始正事吧。

面试知识点总结

Java语言的特点是什么?

System.out.println()和System.out.print()什么区别呢?

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

标识符的命名规则需要注意哪几点?

基本数据类型有哪几类?包含String吗?

写出基本数据类型自动转化的流程图

整型默认的是什么类型,浮点型(实数型)默认的是什么类型?

对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?

定义一个变量需要注意什么?

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上

什么是JDK、JRE

基本概念

CPU

中央处理器,是计算机的大脑。他从内存中获取指令,然后执行这些指令
它主要包括两个部分:控制单元、逻辑单元
CPU核心:指的是处理器中实现指令读取和执行的部分。
每台计算机有一个内部时钟,该时钟以固定的速度发射电子脉冲。时钟速度越快,在给定的时间段内执行的指令就越多。速度的计量单位是赫兹(Hz),1HZ相当于每秒一个脉冲。随着CPU速度的不断提高,目前以千兆赫(GHz)来表述。
单位换算:

  • 1KHz = 1024Hz
  • 1MHz = 1024KHz
  • 1GHz = 1024MHz

计算机中的存储单位

计算机就是一系列的电路开关。每个开关存在两种状态,开/关。如果电路是开的那他的值就是1,否则就是0。
bit:一个0或者一个1存储为一个Bit,是计算机中最小的存储单位
byte:1byte = 8bit,byte(字节)是计算机中最基本的存储单元

内存(Ram)

由一个有序的字节序列组成,用于存储程序及程序需要的数据。
一个程序和他的数据在被CPU执行前必须移动到计算机的内存中。
每个字节都有一个唯一的地址。使用这个地址确定字节的位置,以便于存储和获取数据。

操作系统

是运行在计算机上最重要的程序,它可以管理和控制计算机的活动。
操作系统的主要任务:

  • 控制和监视系统的活动
  • 分配和调配系统资源
  • 调度操作

软件

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

人机交互方式

GUI: 图形化界面,这种方式简单直观,使用者易于接受,容易上手。例:WINDOWS操作系统
CLI: 命令行方式,需要有一个控制台,输入特定的指令,让计算机完成一些操作。例:Linux系统控制终端

Java语言概述

  • 是SUN公司1995年推出的一门高级编程语言
  • 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。applet使用现代的图形用户界面与Web用户进行交互。applet内嵌在html代码中。
  • 随着Java技术在Web方面的不断成熟,已经称为Web应用程序的首选开发语言

JavaSE、JavaEE、JavaME

  • JavaSE: 标准版,支持面向桌面级应用的Java平台,提供完整的Java核心API,此版本以前称之为J2SE。
  • JavaEE: 企业版,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet、JSP等,主要针对Web应用程序开发。此版本以前称之为J2EE。
  • JavaME: 小型版,支持Java程序运行在移动终端上的平台,对Java API有所精简,并加入了针对移动端的支持。此版本以前称之为J2ME。

Java语言的特点

  • 面向对象: 两个基本概念:类、对象;三大特性:封装、继承、多态
  • 健壮性: 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个象对安全的内存管理和访问机制。
  • 跨平台性: 通过JVM实现了“Write once,Run Anywhere”

JVM

是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。

什么是JDK、JRE

JDK: Java开发工具包,提供了Java的开发环境和运行环境
JRE: Java运行环境,提供了Java程序运行所需的环境
简单来说,JDK = JRE + 开发工具集;JRE = JVM + JavaSE标准类库

Java中包含几种数据类型

  • 基本数据类型: boolean、char、byte、short、int、long、float、double
  • 引用数据类型: 除去8种基本数据类型,其它都为引用数据类型,主要分为类、接口、数组

八种基本数据类型占用的空间以及取值范围

类型占用内存范围
byte1byte = 8bit-2^7 ~ 2^7 -1
short2byte-2^15 ~ 2^15 -1
int4byte-2^31 ~ 2^31 -1
long8byte-2^63 ~ 2^63 -1
float4byte-3.403E38~3.403E38
double8byte-1.798E308~1.798E308
char2byte

boolean: Java规范中,没有明确指出boolean的大小。在《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。

char可以存一个中文汉字吗?

  • char型变量是用来存储Unicode编码的字符的,unicode 编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字。
  • 不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
  • 说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

二进制原码、反码、补码

  • 计算机底层都以补码方式存储数据
  • 字节第一位为符号位:0表示正数,1表示负数
  • 正数的原码、反码、补码一致
  • 负数的原码与正数原码符号位相反
  • 负数的反码:除符号位以外,其它位取反
  • 负数的补码:反码+1

Java中进制表示方法

  • 二进制: 数字前加0b,例如:0b101
  • 八进制: 数字前加0,例如:0123
  • 十六进制: 数字前加0x,例如:0x11

Java中的运算符

  • 算术运算符: +、-、*、/、%、++、--、+
  • 赋值运算符: =、+=、-=、*=、/=,%=
  • 比较运算符: >、<、==、>=、<=
  • 逻辑运算符: &逻辑与,|逻辑或,!逻辑非,&&短路与,||短路或,^逻辑异或(两者boolean值不一致时为true)
  • 位运算符: <<(2>>2 = 2* 2^2).>>,>>>,&(转换为二进制,对每一位进行逻辑运算),|,^(异或),~(取反)
  • **三元运算符:**true ? "1":"2"

程序流程控制

程序流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块
主要包括三种基本流程结构:

  • 顺序结构
  • 分支结构
  • 循环结构