JavaSE自学笔记Real_001
一、变量
public class Shujuleixing {
public static void main(String[] args) {
//==================================================
//整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x
//==================================================
int i1 = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println("==============================================");
//=============================================
//浮点数拓展 银行业务怎么表示 钱怎么表示
//=============================================
//BigDecimal 数学工具类可以用于钱的计算
//float 与 double 类型有一些问题 有限 离散 舍入误差 大约 接近但不等于
//最好完全避免使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10; //0.1
System.out.println(f==d); //false
float d1 = 23131313132312312f;
float d2 = d1 + 1;
System.out.println(d1==d2); //true
System.out.println(d1);
System.out.println(d2);
System.out.println("==========================================");
//================================================
//字符拓展
//================================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
//所有的字符本质还是数字
//编码 Unicode 表:(97=a 65=A) 2字节 0-65536
//U0000 UFFFF
char c3 = '\u0061'; //以前的程序员需要写Unicode编码而不能直接写a
System.out.println(c3); //输出字母a
//===================================================
//转义字符
//=================================================
//\t 制表符
//\n 换行
//....
System.out.println("=======================================");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb); //false
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd); //true
//==================================================
//布尔值拓展
//==================================================
boolean flag = true;
// if (flag == true){} //新手
// if (flag){} //老手
System.out.println("==========================================");
//============================================================
//数据转换(强制转换)
//==========================================================
//数据可以自动从低类型转换为高类型,但是不能从高类型转换为低类型
//byte,short,char-->int-->long-->float-->double
//强制转换 (类型)变量名 高-->低
//自动转换 低-->高
int i = 128;
byte b = (byte)i; //导致内存溢出
System.out.println(i);
System.out.println(b);
/*
注意点:
1、不能对布尔值进行转换
2、不能把对象类型转换为不相干的类型
3、在把高容量转换为低容量的时候,墙置转换
4、转换的时候可能存在内存溢出,或者精度问题
*/
//操作比较大的数的时候,注意溢出问题
//JDK新特性 数字之间加下划线进行分割不会影响输出
int money = 10_0000_0000;
int years = 20;
int total1 = money*years; //-1474836480 计算的时候溢出了
long total2 = money*years; //-1474836480 转换之前已经溢出了
long total3 = ((long)money)*years; //20000000000 解决方法,湘江一个数转换为long类型
System.out.println(total1);
System.out.println(total2);
System.out.println(total3);
System.out.println("==============================================");
//===================================================================
//变量
//===================================================================
//变量的作用域 类变量前面加(static) 实例变量(普通变量) 局部变量(用在方法里面的变量)
//实例变量:从属于对象;如果不进行初始化,这个类型的默认值为0 0.0
//布尔值:默认是false
//除了基本类型,其他的类型未进行初始化则默认为null
//=======================================================================
//运算符
//=======================================================================
/*
算术运算符:+ - * / % ++ --
赋值运算符:=
关系运算符:> < >= <= == !=
逻辑运算符:&& ! ||
位运算符:& | ^(异或运算符) ~(取反运算符) <<(左移)相当于乘以2 >>(右移)相当于除以2 >>> (了解)
条件运算符:表达式?表达式1:表达式2
扩展运算符:+= -= *= /=
*/
//=======================================================================
//包机制(包的本质就是文件夹)
//=======================================================================
/*
为了更好地组织类,java提供了包机制,用于区别类名地命名空间
包机制地语法格式为:
package pkg1[.pkg2[.pkg3...]];
一般利用公司域名倒置作为包名
为了能够使用某一个包地成员,我们需要在Java程序中明确导入该包,使用”import“语句可以完成此功能
import package1[.package2...].(classname或者*); *代表导入所有的包。
*/
}
}
二、流程控制语句
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
/*
//next()不能输出带有空格的字符串
//nextLine()是一Enter为结束的,可以输出带有空格的字符串
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if(scanner.hasNext()){
//使用next方法接收
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
//凡是属于IO流的类如果不关掉会一直占用资源,要养成好习惯用完就关掉
scanner.close();
*/
//使用nextLine方式
Scanner scanner1 = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//使用nextLine方式接收
String str1 = scanner1.nextLine();
System.out.println("输出的内容为:"+str1);
scanner1.close();
}
}
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘键入数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据:" + i);
}else{
System.out.println("输入的不是整数数据!");
}
System.out.println("请输入小数:");
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据:" + f);
}else{
System.out.println("输入的不是小数数据!");
}
scanner.close();
}
}
if switch while for语句略