java基础知识整理【2】

常量和变量

**常量:**是一个不可改变的量, 字面常量(通过当前字面就知道值并且不能更改)
例如:整数常量 1
变量: 是一个可以改变的量 变量代表一个存储空间,这个存储空间可以存储同一种数据类型的值,这个值是可以不断变化的 数据类型 变量名 = 值;
数据类型有:
基本数据类型(值类型)
byte ,short ,int,long float double char boolean
java中默认整数就是int类型 小数默认就是double类型

public class VarDemo {
public static void main(String[] args) { //定义八种基本数据类型的变量并赋值 //数据类型 变量名 = 值; byte b=1;
//-128~127 short s =2;
//int 在内存开辟是4个字节的空间 4个字节相当于32位 int i = 10;
//最大存储范围是21个亿左右 long l = 1000;
//使用float类型的变量时,需要注意因为默认小数类型是double
//所以编译器就会认为1.234是double类型,如果要存储到float需要明确表示是float类型
//给float类型赋值时,只需给当前值添加f即可
float f1 = 1.234f;
double d1 = 2.345;
char ch = ‘a’;
boolean bl = true; //打印变量的值 System.out.print(“byte类型的变量值:”+b);
System.out.println(“short类型的变量值:”+s);
System.out.println(“int类型的变量值:”+i);
System.out.println(“long类型的变量值:”+l);
System.out.println(“float类型的变量值:”+f1);

Java基本数据类型的转换问题

char 数据类型 字符类型 只能存储一个字符 char类型在赋值时候不能给空值
例如: char ch = ‘’; 错误不能这样写 字符包括: 汉字,英文字母,特殊符号
ps:汉字 是使用 unicode(万国码) ‘\u0000’~’\uFFFF’ --> 表示汉字 --> UTF-8(字符编码) 英文字母,特殊符号 -->ASCII码 0-127 char是不能存储负数
常用字符集:
a~z A~Z 0~9
a --> 97 后续字母每次+1
A–> 65 后续字母每次+1
0 --> 48 后续数字每次+1 ps:String字符串类,所谓的字符串,就是由一串(大于等于1)字符组成
字符串都是使用" “双引号啊括起来 例如:System.out.println(“我是字符串”) 在打印语句中输出汉字,那么需要使用” "将汉字写成字符串 Java中的类型转换分为两大类: 基本数据类型转换 和 对象类型转换(多态) ps:boolean不参与基本数据类型的转换
byte -> short -> char -> int -> long -> float -> double
从byte开始到double结束 是可以依次赋值的,当前类型顺序,在存储空间的大小是逐渐增大 例如:
byte b = 1;
int i = b;
自动类型转换
可以将小范围数据类型存储数据赋值给大范围数据类型存储的数据,那这个过程就是自动类型转换

> public class  AutoTypeDemo{
>     public static void main(String[] args) {
>      //自动类型转换 //可以将小范围数据类型存储数据赋值给大范围数据类型存储的数据,那这个过程就是自动类型转换 byte b = 1;
>     //相当于将b变量中存储的值取出并赋值给i变量,赋值成功后i中存储的值就是1
>     //因为byte类型的存储空间小于int所以将byte类型的变量是可以赋值给int类型 //此时系统会自动发生转型操作 --> 自动类型转换
>                 int i = b; System.out.println("打印i的值:"+i);
>           }
> }

改错题:

int i = 1 , j;//没有错误
float f1 = 0.1;//因为Java中默认是double类型,所以声明成float类型需要添加f 即 0.1f
float f2 = 123;//没错,即可以存储整数也可以存储小数,并且int类型的范围是小于float所以没有错
double d1 = 2e20 , d2 = 124;//没有,即可以存储整数也可以存储小数,并且底层就是使用科学计数法进行计算的
 //所以这里使用e是对 并且代表了10 也就相当于 2*10^20
byte b1 = 1 , b2 = 2 ,b3 = 129;//b3超出了byte的存储范围,所以一定要存储在byte中就必须强制类型转换
 //b3 =(byte)129;
 j = j + 10; //联系上下文,此时发现j并没有初始值所以不能使用,错误需要给j添加初始值 //局部变量在没有赋值初始值之前(即没有初始化之前),不能进行任何计算,否报错
i=i/10;//没有 i的结果 0
i = i * 0.1; //错了 i是int 类型,此时 i*0.1 0.1是double 所以结果是一个小数即double而赋值的数据类型是 int,所以错了 i = (int)(i*0.1);
System.out.println(i*0.1); //没错,这是输出,没有任何赋值,默认就是double
char c1='a',c2=125;
//没错,char是一个特殊的整型,char可以存储正整数(含0)       
System.out.println(c2);
//打印的是一个字符,通过有存的数值去获取ASCII中对应字符 
//byte,short,char在计算是默认会提升为int类型,所以一下二句都错了

byte b = b1-b2; // (byte)(b1-b2)
char c = c1+c2-1; //(char)(c1+c2-1)
float f3 = f1+f2;//没有,float在计算的时候默认不会提升为double类型
float f4 = f1+f2*0.1;//错了,因为0.1是double,所以计算是是float存储范围小于double 即可以修改为0.1f double d= d1 * i + j; 
//错误,j没有初始值

如何交换两个数:

最常用的方式第三方变量
int a = 1;
int b = 2;
int tmp = 0; //第三方变量
tmp = a;
a = b;
b = tmp; 相减:交换两个数,存数据必须是数值类型
int a = 1;
int b = 2;
int sum = a+b;
a = sum - a;
b = sum - b;
ps:若是引用类型,就无法交换 异或:同一个数据被异或两次可以得到原有值(笔试)
int a = 1;
int b = 1;
a=a^ b; //shif+6获取异或符号 b=a^ b// a^ b^ bb中就会获取a的值 a=a^ b //a^ba中会存储b的值

猜你喜欢

转载自blog.csdn.net/root1994/article/details/88884037