JAVA初学者必备---基础知识(二)

1.常量

A:什么是常量?
在程序执行的过程中其值不可以发生改变
B:Java中常量的分类
字面值常量;自定义常量(面向对象部分讲)
C:字面值常量的分类
字符串常量 用双引号括起来的内容
小数常量 所有小数
整数常量 所有整数
字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号,不能不放东西,可以放空格
布尔常量 较为特殊,只有true和false,这两个是关键字
空常量 null(数组部分讲解)

2.变量

A:什么是变量?
在程序执行的过程中,在某个范围内其值可以发生改变的量
B:变量的定义格式
基本格式 变量名 = 变量值
变形格式 数据类型 变量名
变量名 = 数值
C:为什么要定义变量?
用来不断的存放同一类型的常量,并可以重复使用

3.数据类型和分类

A:为什么有数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间.(就是为了限制变量的类型,整数就是整数,不能变成其他类型,比如,字符串,小数)
B:Java中数据类型的分类
基本数据类型 引用数据类型
C:基本数据类型分类(4类8种)
整数型
byte 占一个字节 -128到127 计算机最小字节
short 占两个字 -215~215-1
int 占四个字节 -231~231-1 整数默认的数据类型
long 占八个字节 -263~263-1 long类型数值过大会被默认为In,所以在数值后加L,如果long类型后面加l进行标识最好加L,大写小写都可以,最好大L
byte b=10 short s=20 int i=30 long x=88888888888L
浮点型
float 占四个字节 -3.403E38~3.403E38 小数,只要想在里面赋值都要在数字末尾加F标识 单精度
double 占八个字节-1.798E308~1.798E308 小数默认类型,后面也可以用d标识,一般不加 双精度
float f=12.3F double d=33.4
字符型
char 占两个字节 0~65535 char c=’a’ (没有负数,表示字符)
布尔型
Boolean boolean b1=true boolean b2=false
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
true不能代表布尔类型,true和false只是布尔类型所对应的值而已

4.使用变量的注意事项

案例演示
a:作用域问题 同一个区域不能使用相同的变量名

int x =10;
int x =10;
System.out.println(x);
//输出出错

b:初始化值问题 局部变量在使用之前必须赋值

int y;
System.out.println(x);
//输出出错

c:一条语句可以定义几个变量int a,b,c…;

int a,b,c,d;                  
a = 10;                       
b = 20;                      
c = 30;                       
d = 40;                       
System.out.println(a);      
System.out.println(b);
System.out.println(c);
System.out.println(d);

int x = 10;
int y = 20;
int z = 30;
System.out.println(x);
System.out.println(y);
System.out.println(z);

5.数据类型转换之隐式转换
案例演示

byte + int
int x = 4;
byte b =3;
int a = x + b;
//输出 7

Java中的默认转换规则

取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算

6.数据类型转换之强制转换

例:

int a = 10;
byte b = 20;
b = a + b;
System.out.println(b);  
// 输出,错误,可能损失精度

强制转换的格式
去掉前三个八位,这就叫强制转换
b = (byte)(a + b);
b =(我要转换的类型)(a + b);
强制转换的注意事项
如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同

byte b = (byte)300;
System.out.println(b);
//输出44

十进制300的二进制1 00101100
00000000 00000000 00000001 00101100 300的二进制
00101100 正数的补码反码都一样 所以等于44

7.面试题之变量相加和常量相加的区别

变量相加

byte b1 = 3;                         
byte b2 = 4;                         
byte b3 = b1 + b2;                   
System.out.println(b3);
       //输出错误,损失精度

从两方面去回答这个题
① b1和b2是两个变量相加,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值,相加有可能超出byte取值范围
② byte(或short,char)类型的变量在进行运算的时候,会自动类型提升为int类型,两个int类型相加的结果也是int类型

常量相加

byte b4 = 3 + 4
System.out.println(b4);
//输出7

3和4都是常量,java编译器有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了(常量相加,看看结果是否在取值范围之内,在的话直接赋值)
JVM在编译期间,只会检查语法错误,在运行期间才会检查代码逻辑问题

8.long与float的取值范围谁大谁小(只需要了解)

进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char – int – long – float – double 记住
long: 8个字节 float:4个字节

9.字符和字符串参与运算

例:

System.out.println('a');        
//    输出 a
System.out.println('a'+1);     
//     输出 98

通过看结果知道’a’的值是多少,由此引出ASCII码表,因为a字符对应int类型的97.字符可以查码表,有一一对应关系
B:ASCII码表的概述
记住三个值:
 ‘0’ 48 ‘A’ 65 ‘a’ 97 ‘D’ 68 ‘❤’ 3
例:

System.out.println("hello"+'a'+1);  
// 输出helloa1
System.out.println('a'+1+"hello");   
//输出98hello

遇到字符串之后变成连接,没有遇到就是整型,char自动提升为int类型
D:+在有字符串参与中被称为字符串连接符,任何数据类型用+字符串相连接都会产生新的字符串

System.out.println("5+5="+5+5);    
//输出5+5=55
System.out.println("5+5="+5+5);  
//输出5+5=10; 
System.out.println(5+5+"=5+5");     
// 输出10=5+5;

遇到字符串就会变成连接符,没遇到就正常

10.char数据类型

例:

char c = 97;
System.out.println(c); 
//         输出 a

因为char取值范围是0到65535 数字对应ascii代码表a
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

char c = ‘中’;
System.out.println(c);        
//  输出 中

可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节,所以,Java中的字符可以存储一个中文汉字

11.算术运算符的基本用法

1)什么是运算符? 就是对常量和变量进行操作的符号。
2)运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
3)算数运算符有哪些
+,-,*,/,%,++,–
%,两个数相除,取余数,没余数就是0
4)注意事项:
a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
b:整数相除只能得到整数。如果想得到小数,(把其中一个数变成小数,另一个数在运算时会自动类型提升)必须把数据变化为浮点数类型

System.out.println(10/3);   
// 输出3
System.out.println(10/3.0); 
// 输出3.33333...

c:/获取的是除法操作的商,%获取的是除法操作的余数(取mo)

System.out.println(10/3);   
//  输出3
System.out.println(3 % 5);  
//  输出3

d:%运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1可以用来当作切换条件

12.算术运算符++和–的用法

++,–运算符的作用 自加(++)自减(–)运算
++:自加。对原有的数据进行+1 --:自减。对原有的数据进行-1
案例演示
a:单独使用:放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
b:参与运算使用:放在操作数的前面,先自增或者自减,然后再参与运算。

b = ++ a;
System.out.println(“b=+ b);  
//输出 b=4

放在操作数的后面,先参与运算,再自增或者自减

int a = 3;
int b;
b = a ++;
System.out.println(“a=+ a);
//  输出 a=4
System.out.println(“b=+ b);
//  输出 b=3

习题1,计算a,b,c的值

int a = 10;
int b = 10;
int c = 10;
a = b++;        
    //a=10  b=11
c = --a;         
   //a=9  c=9 
b = ++a;         
   //a=10  b=10
a = c--;         
   //a=9  c=8
输出: a=9 b=10 c=8

习题2,计算y的值

int x = 4;
// 4   +   6   + 60  =70
int y = (x++)+(++x)+(x*10);
//输出:y=70

习题3.问哪句会报错,为什么

byte b = 10;
b++;        
 //b=(byte)(b+1)
b = b + 1;   
 //提升为Int两个Int相加升级为byte,就损失精度了

b = b +1会出错.当byte与Int进行混合运算时,会提升为int类型,两个int相加的结果还是int赋值给byte会损失精度

13.赋值运算符的基本用法

基本的赋值运算符:=
int a=3 把3赋值给左边
把=右边的常量赋值给左边的变量,左边必须是变量
扩展的赋值运算符:+=,-=,*=,/=,%=

in a =3   
a+=4     
  //a=a+4
//输出 a=7

+= 把左边和右边做加法,然后赋值给左边。
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。

short s=1;
s = s+1;    
   //short和int运算会提升为Int类型,两个Int类型相加结果也是Int类型,所以报错
short s=1;
s+=1;       
   //s=(short)(s+1)

14.关系运算符的基本用法及其注意事项
关系运算符有哪些(比较运算符,条件运算符)
,!=,>,>=,<,<= (!= 不等号)
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
"
“不能写成”="。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值