java学习第二天
java学习第二天
类型转换
public class Demo03 {
/**
* @Author:Niko
*@ Description:简单的类型转换学习
*
*
* */
public static void main(String[] args) {
//类型转换
//高级类型向低级类型转换,叫做强制转换,转换的方式是(类型)变量名,但是一旦超出低级的内存访问就会出现内存溢出
int i = 129;
byte b =(byte) i;//byte的内存范围:-127-127,但是一旦超出低级的内存访问就会出现内存溢出
//低级向高级转换,叫做自动转换。
int a = 5;
byte d = 6;
int c = a + d;
System.out.println(c);//自动转换
System.out.println(b);//强制转换
/*
* 注意点
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量的时候,强制转换
* 4.转换的时候注意内存容量,防止出现内存溢出,或者精度问题*/
//例如精度问题的例子:
System.out.println("=======================================");
System.out.println((int)23.5);//把小数转换到整数
System.out.println((int)-42.33f);//把float转换到整数
//结果显然是出现把小数位给去除掉的结果,这样往往会对结果造成一些偏差
System.out.println("=======================================");
//这里是自动转换,低向高进行转换,本质上说明字符也是数字。
char a = 'a';
int c = a+1;
System.out.println(a);
System.out.println(c);//结果很明显的看出字符a 在Unicode表中对应的数字是97
//那如果把整数c强制转换为字符,看是否出现b
System.out.println((char) c);
//结果很明显是b,这是没有问题的。
System.out.println("=======================================");
//操作大的数字的时候,注意溢出问题
// 通过下划线区分单位
int money = 10_0000_0000;//注意类型的内存大小
int years =20;
int total = money*years;
//出现的结果:-1474836480 是不对的,这是表明已经计算出现溢出了
long total2 = money*years;//通过转换之后出现的结果也是一样,这说明转换之前已经存在问题了?
//答案:因为变量默认的是int类型,这导致计算的时候,就已经出现错误,所以结果无论怎么转换都是错误的
System.out.println(total);
System.out.println(total2);
//解决办法,先把一个数转换为Long类型
//long total3 =money*((long)years);
long total3 =((long)money)*years;
//现在的结果就没问题了
System.out.println(total3);
//小细节,在使用long的时候,记住用大写的 L,因为小写的 l 容易看成 1,这样小小的细节往往会造成很大的bug。
}
}
变量
public class Demo04 {
/**
* @Author:Niko
*@ Description:变量的简单认知
*
*
* */
public static void main(String[] args) {
//可以变化的量,就是变量。类似存放空间,不同类型的东西存放在不同类型的空间进行整理,调用等。
//java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
//java 是强类型语言,每个变量必须声明其类型。
/*
* 注意点
* 1.每个变量都有类型(指的是int ,char等),类型可以是基本类型,也可以是引用的类型
* 2.变量名必须是合法的标识符,前面有说过。
* 3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
* */
//例如
int a ;
char c = 'a';
}
/*变量的作用域
*类变量
* 实例变量
* 局部变量
* */
//例子
static int allClicks = 0 ; //类变量:加入关键词 static
String str = "hello world"; //实例变量
public void method(){
int i =0; //局部变量
}
}
public class Demo05 {
//一个类里面可以有:
//可以定义属性:变量
static double salary = 2500;
//实例变量:从属于对象; 如果不自动初始化,会自动使用这个类型的默认值 0 0.0
//在实例变量里面没有初始化值的布尔值类型,默认是false。
//除了基本类型,其余的默认值都是null。
//例子
String name;
int age;
//主程序main方法
public static void main(String[] args) {
//局部变量:只能在main方法里面使用,在main方法外无法被调用
int s = 10;
System.out.println(s);
//实例变量:要想使用实例变量的话,需要自定一个变量去使用
//变量类型 变量名字 = new Demo05(); ,这也属于一种引用变量,这样才可以通过demo05 去使用
Demo05 demo05 = new Demo05();
System.out.println(demo05.name);
System.out.println(demo05.age);
//类变量 static :类变量不能在方法里面定义,只能在类里才能,方法只能是调用
//我main方法上定义一个类方法,现在试下
System.out.println(salary);
}
//其他方法(一般是一些操作方法后面会学)
public void add(){
System.out.println();
}
}
常量
public class Demo06 {
/*
* 常量(一般用final关键字来定义)
* 常量:初始化后不能再改变的值!不会改动的值
* 所谓常量也可以理解为一种特殊的变量,只是它的值被设定后,在程序运行过程中不允许被改变
*
* final 常量名 = 值 ;
* final double(这个是值的类型,不同的值,不同类型) PI = 3,14;
*
* 常量名一般使用大写字符!!!
*
*
* */
//小知识点:static final都属于修饰符,不存在先后顺序。
static final int I = 10;
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(I);
}
}
自我理解
2020年5月19日15:24:22
今天学习内容
类型转换
什么是类型?
一般类型分为基本类型和引用类型,今天学习是基本类型。
基本类型基本为8种分别是
byte,short, char,int ,long,float,double
还有一种布尔值:boolean
其中不同的类型,其内存大小也大不相同
而其中存在两种转换关系:
-
强制转换
解释:由高级类型向低级类型,进行转换就叫做强制转换。
但是同时也需要注意的问题就是,内存的大小的问题,当一个高级的类型的数据转化为低级的时候,低级类型的内存不足以去存储的话,就会出现内存溢出,类似水杯装水。
-
自动转换
解释:由低级类型向高级类型,进行转换就叫做自动转换、
由低到高,内存大的类型,自然而然可以存储内存低的类型的东西。
/*
* 注意点
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量的时候,强制转换
* 4.转换的时候注意内存容量,防止出现内存溢出,或者精度问题*/
在这里说下精度问题:
顾名思义:就是把不同类型的数值进行转换的时候可能会出现偏差
例如
System.out.println((int)23.5);//把小数转换到整数
System.out.println((int)-42.33f);//把float转换到整数
//结果显然是出现把小数位给去除掉的结果,这样往往会对结果造成一些偏差
变量
变量:就是可以变化的量,类似一个空间,它可以是不同类型的空间,但是同时存放怎么不同类型的数值。
常量
常量:初始化后不能再改变的值!不会改动的值
所谓常量也可以理解为一种特殊的变量,只是它的值被设定后,在程序运行过程中不允许被改变
//结果显然是出现把小数位给去除掉的结果,这样往往会对结果造成一些偏差
变量
变量:就是可以变化的量,类似一个空间,它可以是不同类型的空间,但是同时存放怎么不同类型的数值。
[外链图片转存中…(img-RfMVAQK7-1589887782374)]
[外链图片转存中…(img-7tBQtrvS-1589887782376)]
常量
常量:初始化后不能再改变的值!不会改动的值
所谓常量也可以理解为一种特殊的变量,只是它的值被设定后,在程序运行过程中不允许被改变
下一篇: 判断一个年份是不是闰年