【Java语言基础 01】
一、变量和字面值
1、变量必须先声明然后才能赋值,即:只有声明后才能使用
2、已经赋值的变量可以重新赋值,即:修改原先赋的值
3、同一域内变量名不能重复
4、变量的四个属性:数据类型,变量名,变量值,占用内存大小
package com.JavaStudy.study0327; /** * @Created by IntelliJ IDEA. * @Author wufq * @Date 2020/3/27 17:05 */ public class VarTest01 { //在内存中声明一个变量i,并且把字面值10赋值给i变量 //声明和赋值时可以放到一起操作的 public static void main(String[] args){ int i =10; //变量可以重新赋值 i=20; //在同一个域中变量名是不能重复的 // int i= 1000; error //变量必须先声明在赋值才能使用 int a = 13; System.out.println("a= "+a); //声明三个整数型的变量b,c,d 只有d赋值20 int b,c,d = 20; b = 30; c = 40; System.out.println("b="+b); System.out.println("c="+c); System.out.println("d="+d); } }
二、字符和字符串之间的区别:
形式上:
字符常量是单引号括起来的一个字符,例:’a‘
字符串常量是双引号括起来的多个字符,例:“hello”
含义上:
字符常量相当于一个整形值(),可以参加表达式运算,也可以直接当变量使用
字符串常量代表了一个地址值(该字符在内存中存放的位置)
占内存大小:
字符常量只占一个字节
字符串占多个字节
字符常量用char型变量来存储
字符串用char数组来存储
类型:
字符类型用char声明
字符串类型用String声明
两者都是常量,区别与使用方法的不同
三、变量的数据类型
1、两大类:基本数据类型、引用数据类型
基本数据类型(4类八种):数值型(字节型(byte:1个字节),短整型(short:2字节),整形(int:4字节)长整形(long:8字节),浮点型(单精度浮点型float,双精度浮点型dubbo),字符型(char),布尔型(boolean)
引用数据类型:类,接口,数组
byte 1 (-128~127)
short 2(-32768~32767)
int 4
long 8
1Byte = 8bit
1KB = 1024Byte
1MB = 1024KB
1GB = 1024MB
MB指的是MByte,Mb指的是Mbit,也就是说MByte = 8*Mbit
整数在Java中有三种表示方法
十进制(常用的)
八进制(从0开始)
十六进制(从x0开始)
Java中任何一个整数,默认类型都是int
//十进制 int l1 = 10; //八进制,已0开头 int l2 = 010; //十六进制,已x0开头 int l3 = 0x10; System.out.println(l1+l2+l3); //34 //自动类型转换,小容量-->大容量 // int-->long long t1 = 10; //不需要类型转换 long t2 = 10L;//加个l表示长整型 long t3 = 2147483647; long t4 = 2147483648;//int类型的最大容量为2147483647,超出去就会报错,只需要在后面增加一个l就可以
2、如果整数没有超出范围,可以直接将这个整数赋值给byte,short,char
public class VarTest02 { /* 除了整形int以为其他的数值型byte short long byte:-128~127 short:-32768~32767 long */ public static void main(String[] args){ //1、整形没有超出其他byte,short,long的数值范围,可以直接赋值 byte a1 = 10; System.out.println("a1:"+a1);//10 //2、超出范围需要强制转换,强制转换的结果会使精度丢失。 //强制转换的方法:所赋的值前面加上(数据类型) byte a2 = (byte)128; System.out.println("a2:"+a2);//-128 byte a3 = (byte)188; System.out.println("a3:"+a3);//-68 short a4 = 32767; System.out.println("a4:"+a4);//32767 short a5 = (short)32799; System.out.println("a5:"+a5); //-32737 //通过以上数据的打印,可以看出大容量像小容量的转换,即:强制转换会使精度丢失 } }
3、
关于char类型,最大取值范围为:0~65535==>2^16-1
即可以把数字赋值给char类型,也可以字符赋值给char类型
char类型中有字符编码方式:
基本的编码是ASCII:
'a' 97
'A' 65
'0' 48
char c1 =10; char c2 = 'a'; System.out.println(c2);//a char c3 = '中'; System.out.println(c3);//中 // char c4 = '中国';//char两个字符长度,一个汉字占两个字符长度,所有'中国'四个字符长度,会报错 char c5 = 65535; char c6 = (char)65536;//超出最大取值范围会报错,采用强制转换 System.out.println(c6);//[]
4、浮点型:类型:folat,double
float 4字节
double 8字节
Java中的小数默认的类型都是double类型
小数赋值给float时,需要进行转换:1、在值后面加F/f 2、强制转换
double d1 = 2.51; float d2 = 2.67f; float d3 = (float) 2.35; System.out.println("d1:"+d1 +"\nd2:"+d2+"\nd3:"+d3);
5、boolean类型一个直接,只有两个值,true,flase
一般用于判断语句
6、char类型
1、char在Java中表示字符,描述的是显示世界中的文字
2、因为计算机只识别二进制,所以必须引入"字符集编码方式"
3、导致程序乱码原因:编码和解码不一致
4、char底层占用两个字符,编码方式采用的是unicode(UTF-16)进行编码
5、汉字占用两个字符,所以char可以存储一个汉字
7、转义字符:/n换行,/t制表符相当于table键(中间空4个字符)
/* 转义字符:/n换行,/t制表符相当于table键(中间空4个字符) */ char c1 = 'n'; char c2 = '\n'; System.out.print("AB"+c2+"CD"); /* AB CD */ char c3 = '\t'; System.out.print("abc"+"def");//abcdef System.out.print(c2); System.out.print("abc"+c3+"def");//abc def
8、基本数据类型的转换关系
|-- 八种基本数据类型中,只有boolean类型不能参加类型转换
|-- 小容量向大容量转换,叫做自动类型转换
byte<short(char)<int<long<float<double
|-- byte,short,char三种类型做混合运算先转换成int类型在做运算
|-- 大容量向小容量转换,叫做强制转换,需要加强制类型转换符
|-- 如果整数没有超出范围的话,可以直接将整数赋值给byte,short,char
|-- 多种数据类型做混合运算先转换成容量大的那种在做运算
四、算术运算符
/* 算术运算符: + 求和 - 相减 * 乘法 / 除法 % 取余数 ++ 自加1 -- 自减1 */ public static void main(String[] args){ int a =10; int b = 3; System.out.println(a+b);// 13 System.out.println(a-b);// 7 System.out.println(a*b);// 30 System.out.println(a/b);// 3 System.out.println(a%b);// 1 //关于++运算符 int i= 10; i++; System.out.println(i); int j = 10; ++j; System.out.println(j); //这两种情况下++放在前面和放在后面是一样的 //++出现在变量后面,先赋值后加1,++出现在变量前面,先加1后赋值 int x = 10; int y=x++; //++出现在了x之后,即x的值10先赋值给y,则y的值变成了10,然后在+1 System.out.println("y=="+y);//10 System.out.println("x=="+x);//11 int m = 10; int n = ++m; System.out.println("m=="+m);//11 System.out.println("n=="+n);//11 }
五、关系运算符
> < >=等等,关系运算符一定是布尔类型的
六、布尔运算符
七、赋值类运算符
基本赋值运算符:=
扩展赋值运算符:
+=
-=
*=
/=
%=
int i= 10; i +=20; //相当于:i= i+20; System.out.println("i+=:"+i);//30 i -=20; //相当于:i= i-20; -->30-20 System.out.println("i-=:"+i);//10 i *=20; //相当于:i= i*20; -->10*20 System.out.println("i*=:"+i);//200 i /=3; //相当于:i= i/3; -->200/3 System.out.println("i/=:"+i);//66 i %=3; //相当于:i= i/3; -->66/3 System.out.println("i %=:"+i);//0 //i首先被赋值10.然后每次加减乘除后都重新被赋值 /* 重点:不同类型的数值进行运算时,首先要转换成最大的类型进行运算 */ byte b =10; b = (byte)(b+10);//b是byte类型,b+10程序会自动转换成int类型,加后的结果重新赋值给byte的b会报错,所以需要强制类型转换 b +=10;//扩展的运算会自动转换成
六、字符串的连接运算符