【笔记】Java相关大杂烩①
【笔记】Java相关大杂烩
Java 程序的执行流程是?
*.java 文件-->*.class 文件-->类装载器-->字节码校验器-->解释器-->操作系统平台
Java 程序执行时哪一个环节会测试代码段格式和规则检查?
字节码校验器
字节码校验器其功能是对字节码文件进行校验,保证代码的安全性。字节码校验器负责测试代码段格式并进行规则检查,检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。
Java 程序之所以可以跨平台运行,主要是依赖于哪一个环节?
解释器
具体的平台并不认识字节码文件,最终起作用的还是这个最重要的解释器,它将字节码文件翻译成所在平台能识别的东西。
Java 中的垃圾回收机制不具备什么特点?
Java 中的垃圾回收机制不需要编写代码来释放内存空间。
Java 三大体系?
JavaSE、JavaEE、JavaME。
JavaSE 是标准版,主要是基础的建设;JavaEE 是企业版,主要是企业应用的开发和规范;JavaME 是嵌入版,主要是早期嵌入式应用。
Java 三大核心机制?
分别是 JVM、GC、CS。
JVM 是 Java 虚拟机,GC 是 Java 自动垃圾回收机制,CS 是 Java 代码安全检测。
JVM 实现了一处编译到处运行,GC 让程序员可以更方便的对内存进行操作使用,CS 完全是底层完成的安全性处理。
Java之父?
詹姆斯·高斯林(James Gosling)
sysout输出是不是必要英文双引号?
字符串要加,变量不用加
同时System.out.println("HelloWorld!");以及System.out.print("HelloWorld!");都是可以输出的
Java 语言是 Sun 公司研发的一种脚本语言?
Java 语言是 Sun 公司研发的一种编程语言,而不是脚本语言。
无论何种情况下,都必须安装 JDK ,才能运行 Java 程序吗?
DK 是 Java 语言的开发套件,只有需要开发的请求下需要安装 JDK ,运行 Java 程序只需安装 JRE 即可。
Java 哪种变量名最合适?
对于变量名和方法名,建议第一个单词应以小写字母作为开头,后面的每个单词则都要以大写字母开头,例如 eatFish、sendMessage。
哪些地方可以加文档注释?
文档注释可以修饰的是public 修饰的类和接口,public 和 protected 修饰的方法
常量的定义方式?
Java 中常量要使用 final 关键字来修饰,放到数据类型 int 前面,常量名最好是全大写。
Java 中 int 类型数据占有多少个字节的存储空间?
Java 中 int 类型数据占有 4 个字节的存储空间。
布尔型变量定义?
Java 中布尔型数据关键字为 boolean,值为 true 和 false。
浮点型数据表示?
Java 中 float 类型的数据可以加 f 来标识,double 类型的数据可以加 d 来标识,如果一个小数不加 f 和 d,那么默认是 double 类型
Java 中引用数据类型包含哪些?
Java 中引用数据类型包含有数组、类和接口三种类型。
Java 中数据类型转换?
Java 中四种整数之间的转换,小范围的可以自动转换为大范围的,大范围的需要强制转换为小范围的
表达式1?表达式2:表达式3
从结构中我们可以看到,条件运算符是由问号和冒号组成的,? 左边的表达式 1 必须返回 boolean 类型值,需要根据布尔值来确定执行后 : 左边还是右边的表达式,当表达式 1 返回 true 时,执行 表达式 2,当返回值为 false 时,执行 表达式 3。
移位运算符的使用
int a = 10;
// 无符号右移,移动 3 位
int b = a >>> 3;
System.out.println(b);
// 左移,移动 3 位
int c = a << 3;
System.out.println(c);
// 右移,移动 32 位
int d = a >> 32;
完成在控制台输入一个三位数,判断该数是否为水仙花数。
import java.util.Scanner;
public class Narcissus {
public static void main(String[] args) {
/*水仙花数(Narcissistic number)
也被称为超完全数字不变数
(pluperfect digital invariant, PPDI)、
自恋数、自幂数、
阿姆斯壮数或阿姆斯特朗数(Armstrong number),
水仙花数是指一个 3 位数,
它的每个位上的数字的 3 次幂之和等于它本身。*/
System.out.println("请输入一个三位整数:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int n = num / 100;
int u = num / 10 % 10;
int m = num % 10;
if(n * n * n + u * u * u + m * m * m == num) {
System.out.print(num + "是水仙花数");
}else{
System.out.print(num + "不是水仙花数");
}
}
}
Java 中以下代码
int a = 1;
boolean b = (a>0) || (a++>1);
执行后,变量 a 和 b 的值为?
(1>0) 为 true;因为 || 为短路或,所以后面的 (a++>1) 已经没有必要计算判断了,所以 a 的值为 1,b 的值为 true。
Java 中以下代码 int a = 3 & 4; 执行后,变量 a 的值为?
3 二进制为 0000 0000 0000 0011,4 二进制为 0000 0000 0000 0100,3 & 4 后为 0000 0000 0000 0000,值为 0。
Java 中以下代码 int a = 3 | 4; 执行后,变量 a 的值为?
3 二进制为 0000 0000 0000 0011,4 二进制为 0000 0000 0000 0100,3 | 4 后为 0000 0000 0000 0111,值为 7。
Java 中以下代码 int a = 4 ^ 5; 执行后,变量 a 的值为?
4 二进制为 0000 0000 0000 0100,5 二进制为 0000 0000 0000 0101,4 ^ 5 后为 0000 0000 0000 0001,值为 1。
Java 中以下代码 int a = ~3; 执行后,变量 a 的值为?
3 二进制为 0000 0000 0000 0011,~3 之后的值为 1111 1111 1111 1100(补码),转换为原码(最高位不变,其余位取反后+1):1000 0000 0000 0011+1=1000 0000 0000 0100,该值为 -4。
Java 工程师的月薪按以下方式计算:
Java 工程师月薪 = 月底薪 + 月实际绩效 + 月餐补 - 月保险
其中:
月底薪为固定值。
月实际绩效 = 月绩效基数(月底薪 × 25% )× 月工作完成分数(最小值为 0,最大值为 150 )/ 100。
月餐补 = 月实际工作天数 × 15。
月保险为固定值。
计算 Java 工程师月薪时,用户键盘输入月底薪、月工作完成分数(最小值为 0,最大值为 150)、月实际工作天数和月保险 4 个值,需要按该顺序进行代码编写,便可以计算出 Java 工程师月薪
import java.util.Scanner;
class CalSalary {
public static void main(String[] args) {
//Java工程师月薪
double engSalary = 0.0;
//底薪
int basSalary = 3000;
//月工作完成分数(最小值为0,最大值为150)
int comResult = 100;
//月实际工作天数
double workDay = 22;
//月应扣保险数
double insurance = 3000 * 0.105;
//从控制台获取输入的对象
Scanner input = new Scanner(System.in);
System.out.print("请输入Java工程师底薪:");
//从控制台获取输入—底薪,赋值给basSalary
basSalary = input.nextInt();
System.out.print("请输入Java工程师月工作完成分数(最小值为0,最大值为150):");
//从控制台获取输入—月工作完成分数,赋值给comResult
comResult = input.nextInt();
System.out.print("请输入Java工程师月实际工作天数:");
//从控制台获取输入—月实际工作天数,赋值给workDay
workDay = input.nextDouble();
System.out.print("请输入Java工程师月应扣保险数:");
//从控制台获取输入—月应扣保险数,赋值给insurance
insurance = input.nextDouble();
/*Java工程师月薪= 底薪 + 底薪×25%×月工作完成分数/100
+ 15×月实际工作天数-月应扣保险数*/
engSalary = basSalary + basSalary * 0.25 * comResult / 100
+ 15 * workDay - insurance;
System.out.println("Java工程师月薪为:" + engSalary);
}
}
Java 中以下代码
int a = 2;
a+=a*=a;
执行后,变量 a 的值为?
a+=a*=a 等价于 a = a + (a * a) = 2 + (2 * 2) = 6。
常量要求?
常量声明时必须使用 final 关键字进行修饰,常量命名时,需要字母全部大写,中间可以用下划线分隔,不建议使用美元符。
计算任意圆的半径:
需要将半径 r 定义为整型,PI 定义为单精度浮点型常量 3.14,面积 s 定义为单精度浮点型。
半径必须是由键盘输入的数据,需要有提示字符串 “请输入圆的半径:”。
import java.util.Scanner;
public class Circle {
public static void main(String[] args) {
double r;
double s;
System.out.println("请输入圆的半径:");
Scanner in = new Scanner(System.in);
r=Double.parseDouble(in.nextLine());
s=Math.PI*r*r;
float a = (float) s;
System.out.println("圆的面积:" + a);
}
}
同理,计算正方体体积的
import java.util.Scanner;
public class Cube {
public static void main(String[] args) {
double r;//int也可
double s;//int也可
System.out.println("请输入正方体的边长:");
Scanner in = new Scanner(System.in);
r=Double.parseDouble(in.nextLine());
s=r*r*r;//int也可
float a = (float) s;//int也可
System.out.println("该正方体的体积为:" + a);
}
}
计算圆柱体的
import java.util.Scanner;
public class Cylinder {
public static void main(String[] args) {
double r;//int也可
float s;//int也可
double h;//int也可
int a;
int b;
System.out.println("请输入圆柱底面半径:");
Scanner in = new Scanner(System.in);
//r=Double.parseDouble(in.nextLine());
a=Integer.parseInt(in.nextLine());
System.out.println("请输入圆柱的高:");
Scanner nn = new Scanner(System.in);
//h=Double.parseDouble(nn.nextLine());
b=Integer.parseInt(nn.nextLine());
s=(float) (3.14*a*a*b);//int也可
//float aa = (float) s;//(Math.round(s*10))/10;//int也可
System.out.println("该圆柱体的体积为:" + s);
}
}
--------------or-----------------
import java.util.Scanner;
public class Cylinder {
public static void main(String[] args) {
float s;
float ss;
int a;
int b;
System.out.println("请输入圆柱底面半径:");
Scanner in = new Scanner(System.in);
a=Integer.parseInt(in.nextLine());
System.out.println("请输入圆柱的高:");
Scanner nn = new Scanner(System.in);
b=Integer.parseInt(nn.nextLine());
s=(float) (3.14*a*a);
ss = s*b;
System.out.println("该圆柱体的体积为:" + ss);
}
}
------------------or 输入样式是5 5这种的--------------
import java.util.Scanner;
public class Cylinder {
public static void main(String[] args) {
float s;
float ss;
System.out.println("请输入圆柱底面半径:");
Scanner in = new Scanner(System.in);
String aaa = in.nextLine();
String[] arr = aaa.split(" ");
//System.out.println(arr[0] + arr[1]);
int a = Integer.valueOf(arr[0]).intValue();
int b = Integer.valueOf(arr[1]).intValue();
//System.out.println(a + b);
//int a = in.nextInt();
System.out.println("请输入圆柱的高:");
//Scanner nn = new Scanner(System.in);
//int b = nn.nextInt();
s=(float) (3.14*a*a);
ss = s*b;
System.out.println("该圆柱体的体积为:" + ss);
}
private static int stoi(String a1) {
return 0;
}
}