标识符(biao zhi fu)
- 包,类,变量,方法等只要是起名字的地方,那个名字就是标识符
- 标识符定义规则:
- a.由数字,字母,下划线_,美元符号$组成
- b.不可以以数字开头,不可以使用Java中的关键字
- c.见名知意:增加代码的可读性
- d.大小写敏感
- e.驼峰命名法: (1).类名:首字母大写,其余遵照驼峰命名法
(2).方法名,变量名:首字母小写,其余遵循驼峰命名
(3).包名:全部小写,不遵循驼峰命名
- f.长度无限制,但是不建议太长
关键字
被赋予特殊含义,有专门的用途的单词;Java中所以关键字都为小写
官网地址:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
常量和变量
常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。
在Java语言中,主要是利用关键字final来定义一个常量。常量一旦被初始化后不能再更改其值。
为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量(字符常量)。
(1).常量分为两种:
字面常量的类型:
注意:逻辑常量就两个值,一个是true,一个是false
(2).变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。比如,int a=3; 表示a变量的空间大小为4个字节。变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。
【1】变量声明格式:
type varName =value...]; //[ ]中的内容为可选项,即可有可无
数据类型 变量名 [=初始值] [,变量名 [=初始值]…];
案例:
int age = 19 , age2 = 90 ; int age,age2;
【2】变量的声明:
a. 如果你只定义一个变量,没有给变量进行赋值的话,那么其实这个变量相当于没有定义:
b.我们自己定义的时候直接就可以用一句话定义:
int age = 10;
变量的值可以更改:public class TestVar01{public static void main(String[] args){//变量的声明(定义变量)(以年龄为案例讲解)//java是一个强类型的语言,只要声明变量就必须定义类型:定义整数类型int age ; //定义一个整数类型的变量,变量名字为age //对变量进行赋值操作:
age = 10; //变量名字为age,具体的值为10
age = 12;
age = 20;
age = age + 4;
age = 9;
age = 9;
System.out.println(age);
}
}
c. 变量不可以重复定义:
d. 变量的使用:
public class TestVar01{public static void main(String[] args){//变量的声明(定义变量)(以年龄为案例讲解)//java是一个强类型的语言,只要声明变量就必须定义类型:定义整数类型int age ; //定义一个整数类型的变量,变量名字为age //对变量进行赋值操作:
age = 10; //变量名字为age,具体的值为10
age = 12;
age = 20;
age = age + 4;
age = 9;
age = 9;
System.out.println(age);
System.out.println(age-2);
System.out.println(age+10);int num = age + 66;
System.out.println(num);
}
}
扩展:public class TestVar02{public static void main(String[] args){int a = 10;int b = 20;int c = a + b ;
}
}
e.变量的内存:
f.习题:
public class TestVar03{public static void main(String[] args){int num1 = 10;int num2 = 20;
num1 = num2;
num2 = num2 + 10;
num1 = num2 - 10;
num2 = num1;
System.out.println("num1="+num1);
System.out.println("num2="+num2);
}
}
g.变量的作用域:
作用域指的就是作用范围,变量在什么范围中有效
作用范围就是离它最近的{}
基本数据类型
(1).整型:
(2).浮点型:
float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。
PS:有效数字指的是从左开始第一个不为0的数到最后一个数.
(3).字符类型:
(4).boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。boolean类型用来判断逻辑条件,一般用于程序流程控制 。
进制
每一个八进制位可以等价替换为三个二进制
每一个十六进制可以等价替换成四个二进制
八进制06743 = 006743 = 110111100011
十六进制0x9E3 = 09e3=100111100011
2^0=1
2^1=2
2^2=4
2^3=8
在使用二进制表示数字的时候,一个字节中最高位(左侧)不是用来表示数字大小的,
而是用来表示数字正负的,0代表正数,1代表负数.
有的数据存储和运算,都是以补码的形式进行的,将数据计算出结果,对结果再进行补码
原码:二进制表示形式,就是原码
反码:正数的反码与原码相同;负数的反码就是原符号位不变,其他按位取反
补码:正数的补码与原码相同;负数的补码是反码+1
进行两数运算时:
两个操作数有一个为double,计算结果提升为double
如果操作数中没有double,有一个为float,计算结果提升为float
如果操作数中没有float,有一个为long,计算结果提升为long
如果操作数中没有long,有一个为int,计算结果提升为int
如果操作数中没有int,均为short或byte,计算结果仍旧提升能够为int
特殊:任何类型与String相加时,实为拼接,其结果自动体上升为String
类型转换
【1】什么是类型转换:
在赋值运算或者算数运算的时候,要求数据类型一致,就要进行类型的转换。
【2】类型转换的种类:
自动转换,强制转换
【3】内存演示:
【4】代码:
public class TestVar10{public static void main(String[] args){//类型转换的两种形式:double d = 6;//int-->double 自动类型转换
System.out.println(d);int i = (int)6.5;//double--->int 强制类型转换 (强转)
System.out.println(i);//在同一个表达式中,有多个数据类型的时候,应该如何处理://多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算//double d2 = 12+1294L+8.5F+3.81+'a'+true;double d2 = 12+1294L+8.5F+3.81+'a';
System.out.println(d2);/*
类型级别:(从低到高的)
byte,short,char-->int--->long--->float--->double
级别用来做什么?当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后
其余的类型都转换为当前表达式中级别最高的类型进行计算。
double d2 = 12+1294L+8.5F+3.81+'a';
= 12.0+1294.0+8.5+3.81+97.0
*/int i2 = (int)(12+1294L+8.5F+3.81+'a');
System.out.println(i2);/*
在进行运算的时候:
左=右 : 直接赋值
左 左>右 :直接自动转换
*///以下情况属于特殊情形:对于byte,short,char类型来说,只要在他们的表数范围中,赋值的时候就不需要进行//强转了直接赋值即可。byte b = 12;
System.out.println(b);byte b2 = (byte)270;
System.out.println(b2);
}
}
控制台输入
(1).import报名.类名;//将外部class文件的功能引入到自身文件中
importjava.util.Scanner;
声明Scanner类型的变量
使用Scanner类中对应的方法(区分类型):
.nextInt();获取整数
.nextDouble();获取小数
.next();获取字符串
.next().charAt(0);获取单个字符
如果输入了不匹配的数据,则会产生java.util.ImputMismatchException
(2).代码示例:
import java.util.Scanner;public class Test_Homework{public static void main(String[] args){
Scanner sc = new Scanner(System.in); //拿到扫描器//提示,在这输入你的姓名
System.out.print("Please input your name here: ");//定义一个字符串类型来接收
String name = sc.next();
System.out.print("Please input your age here: ");int age = sc.nextInt();
System.out.print("Please input your gender here: ");
String sex = sc.next();
System.out.println("Your name is: " + name);
System.out.println("Your age is: " + age);
System.out.println("your gender is: " + sex);
}
}