数据类型扩展
public class Dome03 {
public static void main(String[] args) {
//整数拓展 : 进制 二进制0b 十进制 八进制0 十六进制0x
int i=10;
int i1=010;//八进制0 逢八进一
int i2=0x10;//十六进制0x 0~9 A~F 16 逢十六进一
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println("================================================================");
// ====================================================
//浮点数拓展 问题: 银行业务怎么表示?
//BigDeciaml 用一个数字工具的类来表示
//======================================================
//float 有限,离散,舍入误差,大约,接近但不等于
//double
float f =0.1f;//01.
double d1=1.0/10;
System.out.println(f);
System.out.println(d1);
System.out.println(f==d1);//运行可知两个虽然都等于0.1,,但是两个的值并不相等
//再举个例子
float d2=23123131232f;
float d3=d2+1;
System.out.println(d2==d3);//输出结果为 true
//总结:最好完全避免使用浮点数进行比较
//总结:最好完全避免使用浮点数进行比较
//总结:最好完全避免使用浮点数进行比较
//===========================================================
//字符拓展
//==========================================================
System.out.println("================================================================");
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println((int)c1);//int代表的是强制转换,
System.out.println(c2);
System.out.println((int)c2);//int代表的是强制转换
//所有的字符本质还是数字
//编码 Unicode 表:(例如 97=a 65=A) 2字节 65536
//格式 U0000 UFFFF
//例如
char c3='\u0061';
System.out.println(c3);
//输出3
//==========================================================
//转义字符
//==========================================================
// \t 空格
// \n 换行
//......
System.out.println("================================================================");
String sa= new String("hello world");
String sb= new String("hello world");
System.out.println(sa==sb);
String sc="hello world";
String sd="hello world";
System.out.println(sc==sd);
//对象 从内存分析
//布尔值扩展
boolean flag=true;
if (flag==true);//这行代码与if (flag){};一样
//Less is More! 代码要精简易读
}
}
类型转换
由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。
低------------------------------>高
byte,short, char ,--->int---->long---->float--->double
(小数的优先级一定大于整数)
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换 (从高到低需要强制转换) 例如:int i=120
byte b= i, 就要在i前面加上(byte),如byte b = (byte)i
-
自动类型转换(从低到高不不需要强制转换) 可以直接进行转换
public class Dome04 {
public static void main(String[] args) {
byte i=126;
int b =i;//运行会发现内存溢出
//强制转换: (类型)+变量名 高到低需要强制转换
//自动转换 低--高不需要强制转换
System.out.println(i);
System.out.println(b);
}
}
注意点
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换,反之不用管
4.转换的时候可能存在内存溢出,或者精度问题!
当数值较大的时候进行运算
要注意内存溢出
public class Demo05 {
public static void main(String[] args) {
//当操作比较大的数的时候,注意溢出问题
//JDK新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int tota1=money* years;//输出为-1474836480,计算的时候溢出了
long tota2 = money*years;//输出一样为-1474836480,默认是int,转换之前以及存在问题了
long tota3=money*((long)years);//先把一个数转换成long
System.out.println(tota1);
System.out.println(tota2);
System.out.println(tota3);
//注意大小写区分
}
}
变量
-
变量是可以变化的量
-
java是一种强语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型和作用域。
注意事项
-
每个变量都有用类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class Deno06 {
public static void main(String[] args) {
int a=1;
String name="jack";
char x='X';
double pi = 3.14;
}
}
变量作用域
-
类变量
-
实例变量
-
局部变量
public class Dome07 {
//类变量 static
static double salary=2500;
//属性:变量
//实例变量:从属于对象,如果不自行初始化,这个类型的额默认值 0 0.0
//布尔值默认输出是 false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明和初始化值
int i=10;
System.out.println(i);
//变量类型 变量名字= new Dome07()
Dome07 dome07 = new Dome07();
System.out.println(dome07.age);
System.out.println(dome07.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
-
初始化后不能再改变的值,不会变动的值
-
所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变。
final //常量名=值
final double PI = 3.14 //则 PI=3.14为常量
-
常量名一般使用大写字符
变量的命名规范
-
所有变量、方法、类名:见字知意
-
类成员变量:首字母大小写和驼峰原则:monthSalary 除了第一个单词以外,后面的单词首字母都大写
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
运算符 运算符的优先级:()
-
算术运算符:+,-,*,/,%,++,——
-
赋值运算符 =
-
关系运算符:> < >= <= == (等于) !=(不等于) instanceof
-
逻辑运算符:&& || ! (与或非)
-
位运算符: & | ^ ~ >> << >>> (了解!!!)
-
条件运算符: ? :
-
扩展赋值运算符:+= -= *= /=
学会++ --
package operator;
public class Demo03 {
public static void main(String[] args) {
int a = 3;
int b = a++;//先把啊的值赋给b,然后a再进行自增,加一,
//类似于在这里加一行代码 b=a, a=a+1;
System.out.println(a);//所以这里a的值为4
int c = ++a;// 这里是先a进行自己加一,然后在把加过的的值赋给了c,由于上面的a自己加过了一次,是4,现在再加一次就是5,所以a=c=5
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂函数的运算:2的3次方 很多运算,我们会使用工具类来操作!
double pow = Math.pow(2, 3);
System.out.println(pow);
}
}
逻辑运算符
与或非
public class Demo04 {
public static void main(String[] args) {
//与(&&) 或(||) 非(!)
boolean a=true;
boolean b= false;
System.out.println("a&&b:"+(a&&b));//逻辑(与)运算,两个都为真,结果才为true
//当两个运算中的第一个为假的时候,后面的的运算着不会继续进行,称为短路运算
System.out.println("a||b:"+(a||b));//逻辑(或)运算,两个变量中有一个为真,则结果才为true
System.out.println("!(a&&b):"+!(a&&b));//如果为真,则变为假,如果为假,则变为真
//短路运算
int c=5;
boolean d= (c<4)&&(c++<4);//当两个变量第一个出现false,就会结束运算,和后面的没有关系。
System.out.println(d);
System.out.println(c);
}
}
位运算
位运算表示的是二进制里面的计算,如果不懂请看狂神说里的java零基础p29
条件运算符和拓展赋值运算符
拓展运算符
public class Demo05 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b
a-=b;//a=a-b
a-=b;//a=a/b
//...
System.out.println(a);
//字符串连接符 + ,
System.out.println(""+a+b);//当一段字符串类型两侧,有一段String类型的字符串,就会把两个字符变成String类型,然后再连起来。
System.out.println(a+b+"");//注意先后顺序
}
}
三元运算符
x?y:z
如果x==true,则结果为y否则结果为z
public class Demo06 {标签:String,int,day2,System,println,public,out From: https://www.cnblogs.com/jack0725/p/16841365.html
public static void main(String[] args) {
int score=50;
String type = score >=60? "及格":"不及格";//必须掌握
System.out.println(type);
}
}