/*面试点 String和StringBuilder 和StringBuffer的区别?
1.StringBuilder和StringBuffer比string快,后者是前者的安全版本,多线程下是安全的
单线程下StringBuilder速度是最快的
String不可变,StringBuilder和StringBuffer可变
2.case 标签可以是:
类型为 char、byte、 short 或 int 的常量表达式。
枚举常量。
从 Java SE 7开始, case 标签还可以是字符串字面量
java中只有值传递 没有引用传递,值传递就是它本身记录的值
------------------------------------------------------------------------------
3.7.1输入和输出
import java.util.*; 这是引入所有要用到的类接口
记住这两个int 类型 int flag = scanner.nextInt();
String类型 String name = in.nextLine();
*/
/*import java.util.*;
public class aa{
public static void main(String[] args){
System.out.println("欢迎使用计算器,请选择计算类型");
System.out.println("1.加法 2.减法 3.乘法 4.除法 请输入数字类型");
Scanner scanner = new Scanner(System.in);
int flag = scanner.nextInt();
switch(flag){
case 1:
System.out.println("您选择的是加法运算");
break;
case 2:
System.out.println("您选择的是减法运算");
break;
case 3:
System.out.println("您选择的是乘法运算");
break;
case 4:
System.out.println("您选择的是除法运算");
default:
System.out.println("计算类型错误");
return;
}
System.out.println("请输入要计算的两个数字");
Scanner scanner1 = new Scanner(System.in)
Scanner scanner2 = new Scanner(System.in)
int x1 = scanner1.nextInt();
int x2 = scanner2.nextInt();
switch(flag){
case 1:
System.out.println("计算结果: "+ (a+b));
break;
case 2:
System.out.println("计算结果: "+ (a-b));
break;
case 3:
System.out.println("计算结果: "+ (a*b));
break;
case 4:
System.out.println("计算结果: "+ (a/b));
default:
System.out.println("计算类型错误");
return;
}
}
}
*/
/*
import java.util.*;
public class InputTest{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
//get first input
System.out.println("What is your name?");
String name = in.nextLine();
//get second input
System.out.println("How old are you?");
int age = in.nextInt();
//display output on console
System.out.println("Hello, " + name +".Next year,you will be" +(age+1));
}
}
*/
//格式化输出 按照格式输出
//System.out.printf("#####%s#####%d#####%s#####","哈哈哈",35,"我好");
//文件的输入和输出 3.7.3 记String dir = System.getProperty("user.dir");
//块作用域
//变量在哪个块中声明的,出了这个块就没作用了
/*while循环
import java.util.*;
public class Retirement
{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("How much will you contribute to retire?");
double goal = in.nextDouble();
System.out.println("How much money will you contribute every year?");
double payment = in.nextDouble();
System.out.println("Interest rate in %: ");
double interestRate = in.nextDouble();
double balance = 0;
int years = 0;
while(balance < goal){
balance +=payment;
double interest = balance *interestRate / 100;
balance +=interest;
years++;
}
System.out.println("You can retire in " + years + "years") ;
}
}
*/
/* break 终止全部循环
continue终止此次循环
*/
// 大数值 精准计算整数用BigInteger 小数用BigDecimal
/*import java.util.*;
import java.math.*;
public class Test2{
public static void main(String[] args){
BigInteger aa = new BigInteger("2500000000000000000000000000000000000000");
BigInteger bb = new BigInteger("4000000000000000000000000000000000000000");
BigInteger cc = aa.add(bb);
BigInteger dd = aa.subtract(bb);
BigInteger ee = aa.multiply(bb);
BigInteger ff = aa.divide(bb);
BigInteger gg = aa.mod(bb);
System.out.println(cc);
System.out.println(dd);
System.out.println(ee);
System.out.println(ff);
System.out.println(gg);
}
}
*/
//类和对象
/*public class Test2{
public static void main(String[] args){
Person.eyesnum = 9; //定义的静态方法或属性会在static中创建内存
Person.m2();
Person a = new Person();
Person b = new Person();
a.name = "小红";
a.age = 12;
a.height = 155;
b.name = "小明";
b.age = 13;
b.height = 167;
}
}
*/
//任何程序的运行都要在内存中
//操作系统中单个进程所占据的空间叫做块
//static方法或属性属于类,它在创建时只有一份属于类,创建类的对象不会再新建static属性或方法
//不属于对象 创建类的对象时非静态的属性和方法对象都有
//方法的执行在栈中,复制方法到栈中申请的小栈 一个小栈就是一个线程
//栈的功能控制方法的执行顺序和变量的定义域
//程序计数器配合栈工作,用来控制入栈和出栈的时间
//面向对象缩写oop
//4.1类的几个特性?封装 继承 多态 抽象 属性就是实例域
/*对象的实例化
Date deadline = new Date();
有两个部分。表达式 new Date() 构造了一个 Date 类型的对象, 并且它的值是对新创建对象的
引用。这个引用存储在变量 deadline 中
private是私有的,只能是该类自己对变量进行操作
访问器和更改器 可以使private修饰的属性可读可写
因为private修饰的属性不可以直接被对象调用,利用访问器和更改器两个方法进行修改此对象对应的属性
*/
//多线程
//cpu快速切换执行线程 线程执行顺序可能不同 线程优先级越高被优先执行率越大
//start表示线程进入就绪状态,等待cpu选中执行
/*public class Test2{
public static void main(String[] args){
Thread t1 = new Thread(){
@Override
public void run(){
System.out.println("大家好,我是1");
}
};
Thread t2 = new Thread(){
@Override
public void run(){
System.out.println("大家好,我是2");
}
};
t1.start();
t2.start();
System.out.println("大家好,我是3");
}
}
*/
//通过访问器来保证多线程的安全性
public class Person{
public String[] names = {"aa","bb","cc","dd"};
public String[] getNames(){
String[] n = new String[names.length];
for(int i = 0;i < names.length;i++){
n[i] = names[i];
}
return n;
}
}