Java学习日记6.27
类型转换
由于Java是3强类型语言,所以要进行有些运算的时候的,需要用到类型转換。
- 不对布尔值进行转换
- 不能把对象类型转換为不相干的类型
- 在把高容量转换到纸容量的时候,强制转换
- 转換的时候可能存在内存溢出,或精度问题!
操作比较大的数的时候,注意溢出问题
JDK7新持性,数字之间可以用下划线分割
package com.lin.base.base;
public class Demo3 {
public static void main(String[] args) {
//=======================================================
//浮点数拓展 银行业务如何表示?
//BigDecimal 数学工具类
//=======================================================
//float
//double
float f=0.1f;//有限 离散 舍入误差 大约 接近但不等于
double d=1.0/10;//最好完全使用浮点数进行比较
System.out.println(f==d);//false
//System.out.println(f);
//System.out.println(d);
float d1=23456789f;
float d2=d1+1;
System.out.println(d1==d2);//true
}
}
package com.lin.base.base;
public class Demo4 {
public static void main(String[] args) {
//=======================================================
//字符拓展
//=======================================================
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//强制转行
System.out.println(c2);
System.out.println((int)c2);
//所有的字符本质还是数字
//编码 Unicode 表27:(97=a 65=A) 2字节 0~65536 Excel 2^16=65536
//U0000 UFFFF
char c3='\u0061';
System.out.println(c3);//a
//转义字符
//\t 制表符
System.out.println("Hello\tWorld");
//\n 换行
System.out.println("Hello\nWorld");
//......
}
}
package com.lin.base.base;
public class Demo5 {
public static void main(String[] args) {
int i =128;
byte b =(byte)i;//内存溢出
double c=i;
//强制转换 (类型)变量名 高--低
//自动转换 低--高
System.out.println(i);
System.out.println(b);
System.out.println(c);
/*注意点:
1,不对布尔值进行转换
2.不能把对象类型转換为不相干的类型
3.在把高容量转换到纸容量的时候,强制转换
4.转換的时候可能存在内存溢出,或精度问题!
*/
System.out.println("=====================================");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
char a='a';
int d=a+1;
System.out.println(d);
System.out.println((char)d);
}
}
package com.lin.base.base;
public class Demo6 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新持性,数字之回可以用下划线分割
int money=10_0000_0000;
int year=20;
int total=money*year;
//System.out.println(total);//-1474836480,计算时候溢出
long total2=money*year;//默认是int,转换之前已经存在问题了
long total3=money*((long)year);//先把一个数变成long
System.out.println(total3);
//L--√ l--×
}
}
变量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量的命名规范:
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则: monthsalary除了第一个单词以外,后面的单词首字母大写 lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线: MAX VALUE
- 类名:首字母大写和驼峰原则:Man, Goodman
- 方法名:首字母小写和驼峰原则:run(), runRun()
package com.lin.base.base;
public class Demo7 {
public static void main(String[] args) {
//int a,b,c;
//int a=1,b=2,c=3;//程序可读性
String name="xiqing";
char x='x';
double pi=3.14;//定义变量
}
}
package com.lin.base.base;
public class Demo8 {
//属性:变量
//实例变量:从属于对象;如果不初始化的话,就会变成这个类型的默认值 0 0.0 0000
//布尔值默认是false
//除了基本类型,其他的默认值都是null;
//类变量 static
static double salary=2500;
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i=10;
System.out.println(i);
//变量类型 变量名字=new Demo8()
//Demo8 demo8=new Demo8();
//System.out.println(demo8.age);
//System.out.println(demo8.name);
//类变量 static
System.out.println(salary);
}
//其他方法
}
package com.lin.base.base;
public class Demo9 {
//修饰符,不存在先后顺序;
static final double PI=3.14;
//final static double PI=3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
运算符
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
- 算术运算符 + - * / %(模运算 取余) ++ –
- 赋值运算符 =
- 关系运算符 > < >= <= == !=(不等于) intanceof
- 逻辑运算符 && || !
- 位运算符 &|^ ~ >> << >>>
- 条件运算符? :
- 扩展赋值运算符 += -= *= /=
package com.lin.operator.operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a=10;
int b=20;
int c=25;
int d=25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double) b);
}
}
package com.lin.operator.operator;
public class Demo02 {
public static void main(String[] args) {
long a=123123123123123L;
int b=123;
short c=10;
byte d=8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//System.out.println((String)(c+d));//用来检查c+d是什么类型
}
}
package com.lin.operator.operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确 ,错误 布尔值
int a =10;
int b=20;
int c=21;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);//不等于
System.out.println(c%a);//取余 模运算
}
}
package com.lin.operator.operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
int a=3;
int b=a++;//执行完这行代码后,先给b赋值,再自增
//a++ a=a+1
System.out.println(a);
//++a a=a+1
int c=++a;//执行完这行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//for (int i=0;i<5;i++){ }
//幂运算 2^3 2*2*2=8 使用工具类来操作
double pow =Math.pow(2,3);
System.out.println(pow);
}
}
package com.lin.operator.operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a=true ;
boolean b=false ;
System.out.println("a&&b:"+(a&&b));//两变量都为真为真
System.out.println("a||b:"+(a||b));//两变量有一个为真则为真
System.out.println("!(a&&b):"+!(a&&b));//若为真则变假。若为假则为真
//短路运算
int c=5;
boolean d=(c<4)&&(c++<4);//前有错后面不执行,c还是5
System.out.println(d);
System.out.println(c);
}
}
package com.lin.operator.operator;
public class Demo06 {
public static void main(String[] args) {
/*
A= 0011 1100
B= 0000 1101
------------------------
A&B =0000 1100 11为1 0X为0 与
A|B =0011 1101 00为0 1X为1 或
A^B =0011 0001 相同为0,不相同为1
~B =1111 0010
2*8=16 2*2*2*2
<< >> 左移 右移
位运算 效率极高
<< *2
>> /2
0000 0010 2
0001 0000 16
*/
System.out.println(2<<3);
}
}
package com.lin.operator.operator;
public class Demo07 {
public static void main(String[] args) {
int a= 10;
int b= 20;
a+=b;//a=a+b
a-=b;//a=a-b
System.out.println(a);
//字符串连接符 + ,String
System.out.println(a+b);
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
}
}
package com.lin.operator.operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x?y:z
//如果x==true,则结果为y,否则为z
int score =80;
String type = score < 60?"不及格":"及格";//必须掌握
//if
System.out.println(type);
}
}
cast:转换
包机制
一般利用公司域名倒置作为包名: www.baidu.com com.baidu.www
Java Dos
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dw07DTK-1624810245115)(C:\Users\guo\AppData\Roaming\Typora\typora-user-images\image-20210627190457724.png)]
IDER——>DOC——>open in explorer
文件夹——>输入CMD+空格+…+回车
Dos窗口——>javadoc -encoding UTF-8 -charset UTF-8 Doc.java+回车
文件夹——> index.html
网页——>Dos
使用IDEA生成JavaDoc文档?
扫描
package com.lin.scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext() ==true){
String str = scanner.next();//程序会等待用户输入完毕
System.out.println("输出的内容为:"+str );
}
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner .close();
}
}
package com.lin.scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收");
//判断是否还有输入
if(scanner.hasNextLine() ){
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str );
}
scanner.close() ;
}
}
package com.lin.scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str );
scanner.close() ;
}
}
package com.lin.scanner;
import java.util.Scanner ;
public class Demo04 {
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("输入的不是整数数据!");
}
scanner.close();
}
}