1 JDK JRE JVM 三种之间的关系,以及JDK JRE 包含的主要结构有哪些?

JDK = JRE + 开发工具 javac.exe java.exe javadoc.exe等等

JRE = JVM + 核心类库文件

JDK 包含 JRE 包含 JVM

2 为什么要配置path环境变量?怎么配置?

- 我们希望在任意的文件路径下都可以执行Java的开发工具(执行程序)

- 计算机 右键属性 系统设置 高级系统设置 环境变量 新建JAVA_HOME变量,指向JDK的目录,保存确定

JAVA_HOME是bin的上一级目录,点击path变量,增加 %JAVA_HOME%\bin 变量 保存确定

3 常用的命令行操作

- cd + 要切换的路径

- cd .. 退到上一级目录

- dir 列出当前目录项

- cls 清除屏幕

- javac 源文件名.java

- java 字节码文件名.class

4 标识符的命名规则

- 允许字母、数字、下划线、美元符号、组成【人民币羊角符号也可以,但是不要用】

- 不能使用关键字和保留字,但是可以包含

- 首字符不能是数字开头

- 严格区分大小写

【不遵守命名规则,编译无法通过,硬性要求】

5 标识符的命名规范

- 包名的单词全部小写 cn.dai.pojo cn.dao.controller

- 类名、接口的单词首字母全部大写 【大驼峰规则】class DemoTest

- 变量的单词首字母小写,随后的单词首字母全部大写 【小驼峰规则】 intValue strValue

- 常量的标识符单词全大写,使用下划线分割 FINAL_STRING

- 见名知义,不要使用拼音

【不遵守命名规范,编译可通过,但是可读性差,软性要求】

6 Java的变量按数据类型怎么分类? 基本类型有哪些?

- 分引用类型和基本类型

- 基本类型分为 字符、布尔、数值类型 char、boolean

- 数值类型分为 整型 和浮点型

- 整型 byte short int long

- 浮点型 float double

- 引用类型 类、数组、接口

7 说明基本数据变量的自动类型提升的运算规则

byte、short、char、 -> int -> long -> float -> double

8 说明基本数据类型之间强转的使用规则和可能出现的问题

大精度类型转小精度类型  【小类型  标识名 = (小类型)变量】 强转符 :()

出现精度损失

9 & 和 && 的异同

- & 是 长路且 && 是短路且, 都表示且的意思,两个或多个布尔条件为true 结果才为true

- && 在判断第一个布尔条件是false的情况下,不再执行后面的布尔条件,直接返回false

- & 在判断第一个布尔条件是false的情况下,仍然去判断,执行后面布尔条件,再返回false

10 判断输出结果

public class OperatorTest {
public static void main(String[] args) {
boolean x = true;
boolean y = false;
short z = 40; if ((z++ == 40) && (y = true)) z++; // 41、 42
if ((x = false) || (++z == 43)) z++; // 43、 44 System.out.println("z = " + z); //
}
}

11 定义三个整形变量并赋值,使用三元运算或者if-else 获取这三个数的最大值

public class OperatorTest {
public static void main(String[] args) {
int a = (int)(Math.random()*100);
int b = (int)(Math.random()*100);
int c = (int)(Math.random()*100); System.out.println("a = " + a + " b = " + b + " c = " + c); System.out.println("max = " +getMax1(a,b,c));
System.out.println("max = " +getMax2(a,b,c));
System.out.println("max = " +getMax3(a,b,c));
}
// 三元
static int getMax1(int a,int b, int c){
int max;
max = a > b ? a : b;
max = max > c ? max : c;
return max;
}
// if 判断
static int getMax2(int a,int b, int c){
int max = a;
if (b > a) max = b;
else if (c > max) max = c;
return max;
}
// Math方法
static int getMax3(int a,int b, int c){
int max = Math.max(a,b);
max = Math.max(max,c);
return max;
}
}

12 编写程序  声明2个double类型变量并且赋值 判断第一个数大于10.0 且第二个数小于20.0,如果是打印两数之和

public class OperatorTest {
public static void main(String[] args) {
double d1 = Math.random()*21;
double d2 = Math.random()*21; double sum = 0;
if (d1 > 10.0 && d2 < 20.0) sum = d1 + d2;
else System.out.println("d1 = " + d1 + " d2 = " + d2);
System.out.println("sum =" + sum);
}
}

13 交换变量的实现

参考小学生Vita的交换,太强了  https://www.bilibili.com/video/BV1ef4y1U74X

public class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 15;
System.out.println("a = " + a + " b = " + b);
exchange3(a,b); }
// 第一种
static void exchange1(int a,int b){
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a + " b = " + b);
}
// 第二种
static void exchange2(int a,int b){
a = a + b; // a 等于 2数之和
b = a - b; // b 减自己变成了a
a = a - b; // a现在是总和 ,减去变成a的b 就是b的值了
System.out.println("a = " + a + " b = " + b);
}
// 第三种
static void exchange3(int a,int b){
a ^= b;
b ^= a;
a ^= b;
System.out.println("a = " + a + " b = " + b);
// c++ 可以写 a ^= b ^= a ^= b;
}
}

14 Switch可以使用的数据类型

char、byte、short、int、【枚举变量 JDK5】【String JDK7】

15 三元运算 if else 和 swtich case 的适用场景

- 都能使用,优先级考虑 三元 > swtich > if

- 三元适合对变量的处理判断

- if else 适合对范围的一个判断

- swtich - case 适合具体等值的判断

16 控制台获取StrIng 和int 型的变量

import java.util.Scanner;

public class OperatorTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); System.out.println("String类型获取");
String str = input.next(); System.out.println("int类型获取");
int i = input.nextInt(); // 整行字符串获取 String line = input.nextLine();
}
}

17 for 循环 遍历100 ,计算所有奇数的和 与 输出

public class OperatorTest {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i < 101; i++) {
//sum += i % 2 == 0 ? sum : i;
if (i % 2 == 1){
sum += i;
System.out.println(i);
}
}
System.out.println("奇合 " + sum);
}
}

18 循环结构是如何退出循环的?

- 判断循环条件是否为true,如果为false循环条件不成立,中止循环

- 执行循环体内的break关键字,跳出当前循环体

19 求1000内的完数  6 = 1 + 2 + 3 一个数恰好等于因子之和【因子,除去这个数本身的其他数】

public class OperatorTest {
public static void main(String[] args) {
int factor = 0;
for (int i = 1; i < 1000; i++) {
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) factor += j;
}
if (i == factor) System.out.println(i);
// 重置
factor = 0;
}
}
}

20 Break & Continue 使用上的相同点和不同点

- break 可以使用在循环体和switch case分支体

- continue 只能适用循环体

- break 在循环体是结束当前循环体,在switch是跳出分支体

- continue 是结束本次循环

- break & continue 之后都不再执行任何语句

21 实现倒三角【直角三角】

public class OperatorTest {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}

22 实现一维数组初始化和二维数组初始化【各两种方法】

public class OperatorTest {
public static void main(String[] args) {
int[] array1 = new int[10];
int[] array2 = {2,3,4,5,6}; int[][] array3 = new int[10][];
int[][] array4 = {
{1,2,3,4,5},
{6,7,8,9,10}
};
}
}

23 遍历二维数组

public class OperatorTest {
public static void main(String[] args) {
int[][]arr = {{1,2,3},{4,5},{6,7,8}}; for (int i = 0; i < arr.length ; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}

24 不同类型数组初始化的默认值是?

char  '\u0000'

boolean  false

byte short int long  0

float double  0.0

类 接口 数组本身  null

25 画出一维数组的内存解析

String[] strs = new String[5];
strs[2] = "Tom";
strs = new String[3];

26 冒泡排序

public class Arrays {
public static void main(String[] args) {
int[] array = {1,2,5,10,9};
} // 冒泡排序
static int[] bubbleSort(int[] array){ for (int i = 0; i < array.length -1; i++) { for (int j = 0; j < array.length -1; j++) { if (array[j] > array[j + i]){
int temp = array[i];
array[j] = array[j + 1];
array[j + 1] = temp;
}
} }
return array;
}
}

27、反转数组

static int[] reverse1(int[] array){
// 遍历一半长度进行元素交换
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = temp;
}
return array;
}

28、复制数组

public class Arrays {
public static void main(String[] args) { int[] array = {1,3,5,7,9}; // 先复制长度
int[] array2 = new int[array.length]; for (int i = 0; i < array2.length; i++) {
// 复制元素
array2[i] = array[i];
}
}
}

29、线性查找

// 线性查找
static int linearSearch(int[] array,int target){
for (int i = 0; i < array.length; i++) {
if (target == array[i]) return i; // 找到直接返回索引
}
return -1; // 找不到 返回-1
}

30 数组常见异常

【Java】 语言基础习题汇总 [1] 基础概念到数组的更多相关文章

  1. C基础知识(3):指针--概念、数组中指针的递增/递减、指针数组&数组指针、指向指针的指针

    指针是一个变量,其值为另一个变量的地址. 所有指针的值的实际数据类型,不管是整型.浮点型.字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数. 下面从4个代码例子分别讲述以下 ...

  2. 【Java】 语言基础习题汇总 [2] 面向对象

    30 面向对象的三条主线和面向对象的编程思想? 类与类的成员 : 属性.方法.构造器.代码块.内部类. 面向对象的三大特征:封装.继承.多态[如果还有一个,那就是抽象] 关键字:this.super. ...

  3. Java语言程序设计与数据结构(基础篇)第七章答案

    答案为本人求解,如有错误,还望海涵.如有雷同,纯属巧合. 7.1 import java.util.Scanner; public class Main { public static void ma ...

  4. java语言程序设计与数据结构(基础篇)第四章答案

    4.1 import java.util.Scanner; public class Welcome { public static void main(String[] args) { Scanne ...

  5. java语言程序设计与数据结构(基础篇)第二章答案

    答案为本人自己求解,若有错误,还望海涵并及时告知.如有雷同,纯属巧合. 2.1 import java.util.Scanner; public class Welcome { public stat ...

  6. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  7. 【百度文库课程】Java语言基础与OOP入门学习笔记一

    一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  8. Java基础之面向对象以及其他概念

    一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...

  9. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

随机推荐

  1. linux入门系列19--数据库管理系统(DBMS)之MariaDB

    前面讲完Linux下一系列服务的配置和使用之后,本文简单介绍一款数据库管理系统(MySQL的兄弟)MariaDB. 如果你有MySQL或其他数据的使用经验,MariaDB使用起来将非常轻松. 本文讲解 ...

  2. 洛谷1378 油滴扩展 dfs进行回溯搜索

    题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...

  3. github本地提交代码到远程仓库

    1.git工作状态: Workspace: 工作区  :等于平时放代码的地方 Index / Stage: 暂存区,临时存放你的改动,它只是一个文件,保存即将提交到文件列表信息 Repository: ...

  4. PHP中$$的应用

    PHP中$表示一个变量的声明,$value='test':表示变量value的值是test. 而$$则好像是C语言中的指针,它指向一个变量值的一个变量. 例如:$$value='a';这句话的意思就是 ...

  5. npm git 常用命令行 记录

    1. 推出node命令行: 两次ctrl+C或者一次ctrl+D    退出终端:exit; 2.npm 常用 npm install <name>  安装包 npm install &l ...

  6. iOS 项目发布

    一.Apple开发者账号 1.1 开发者账号类型 个人级 公司级 企业级 公司和企业的可多人协作. 在苹果的开发者平台登录后,可在 People 界面邀请其他人员协作开发,邀请的人需要注册一个 app ...

  7. python学习要点(一)

    我的个人博客排版更舒服: https://www.luozhiyun.com/archives/264 列表和元组 列表是动态的,长度大小不固定,可以随意地增加.删减或者改变元素(mutable). ...

  8. rem布局和使用js rem动态改变字体大小,自适应

    解决rem文字动态改变字体大小: <script> console.log(window.devicePixelRatio); var iScale = 1; iScale = iScal ...

  9. 使用appium框架测试安卓app时,获取toast弹框文字时,前一步千万不要加time.sleep等等待时间。

    使用appium框架测试安卓app时,如果需要获取toast弹框的文案内容,那么再点击弹框按钮之前,一定记得千万不要加time.sleep()等待时间,否则有延迟,一直获取不到: 获取弹框的代码: m ...

  10. 《操作系统》课程笔记(Ch01-导论)

    Ch01 - 导论 操作系统的功能 用户视角:在乎使用方便,不在乎资源利用 系统视角:资源分配器.控制程序 计算机系统的运行 启动:利用固件(Firmware)中的引导程序(Bootstrap Pro ...