重要:
String buffer安全内部有安全锁是String builder安全版本
String和StringBuilder 和StringBuffer的区别?
多线程下buffer比builder安全 比String快
单线程速度是最快的 用String builder最快
输入和输出
计算器
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,"我好");
数字转字符串类型是单向的 数字加字符串还是字符串 字符串类型转数字转不了
块作用域
变量在哪个块中声明的,出了这个块就没作用了
文件存储信息要制定编码
获取当前文件在磁盘上的路径
String dir = System.getProperty(user.dir);
Switch语句
case 标签可以是:
- 类型为 char、byte、 short 或 int 的常量表达式。
- 枚举常量。
- 从 Java SE 7开始, case 标签还可以是字符串字面量。
import java.util.*;
public class Test6{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.print("How much money do you need to retire?");
double goal = in.nextDouble();
System.out.print("How much money will you contribute every year?");
double payment = in.nextDouble();
System.out.print("Interest rate in %:");
double interestRate = in.nextDouble();
double balance = 0;
int years = 0;
while(balance
balance += payment;
double interest = balance *interestRate / 100;
years++;
}
System.out.println("You can retire in"+years+"years.");
}
}
大数值
想做数值的精确计算 整数用BigInteger 小数用BigDecimal
import java.util.*;
import java.math.*;
public class Test6{
public static void main(String[] args){
BigInteger aa = new BigInteger("2500000000000000000");
BigInteger bb = new BigInteger("1500000000000000000");
BigInteger cc = aa.add(bb);
BigInteger dd = aa.multiply(bb);
BigInteger ee = aa.subtract(bb);
BigInteger ff = aa.divide(bb);
System.out.println(cc);
System.out.println(dd);
System.out.println(ee);
System.out.println(ff);
}
}
第四章对象和类
任何东西运行都在内存中运行
单个进程所占据的空间是一个块
内存中不同进程占领不同区域 各自占领后互不干扰
申请空间其实是申请了一个数组、
程序可能物理程度上不在一块区域 每一个块中有一个区域存储各种地址
与其他块之间产生联系
单独的进程占据的一个空间叫块本质上是二维数组
.class信息进入内存后首先把内存存到方法区
方法区里面有静态区
静态区中方法可以直接被调用 在进入内存时已经有了自己的空间
方法执行依赖栈 申请到栈结构里面申请子栈 复制发过去形成子栈开始执行
栈
- 控制方法执行顺序
- 变量的定义域
方法执行依赖栈 申请到栈结构里面申请子栈 复制发过去形成子栈开始执行
栈执行时会在大栈中申请一个子栈 是方法执行的载体
执行主方法拷贝过来进入子栈 如果在原来地方直接执行当有多个进程使用主方法会有干扰
方法执行依赖栈 申请到栈结构里面申请子栈 复制发过去形成子栈开始执行
子栈就是数据结构里面的先入后出的栈
线程的执行依赖栈
程序计数器
控制什么时候入栈 什么时候出栈
类中非静态内容每个对象都有一份
带static只在在静态存储标记区
面向对象简称OOP
类的特性
- 封装
- 继承
- 多态
- 抽象
创建类的实例就是创建类的对象
属性就是实例域
变量一定在栈中 对象一定在堆中
引用类型 = 是引用地址
预定义类
Java本身自带的叫预定义类
Java中是按值传递的(非常重要)
引用传递传递的是栈的地址 但是其实传递的是堆里面值的地址
- 按值传递:将方法参数值复制到另一个变量,然后传递复制的对象,将其称为按值传递。
- 按引用传递:将对实际参数的别名或引用传递给方法,将其称为按引用传递的原因。
public void setAge(int a){ age = a;} 对private写 更改器
public void getAge(int a){ age = a;} 读 访问器
可以控制他可读可写
多线程执行其实是CPU快速切换 不一定先执行谁 优先级越高被选中几率越大
操作系统本身没有线程池
public class Test6{
public static void main(String[] mmm){
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");
}
}
start : 就绪 不能够立即执行 会打断CPU进程对别的进程破坏
多线程下其中一个线程对数据进行修改其他线程可能会出错 读取结果产生影响
访问器保证安全要加代码 如果直接用return没有任何安全