编译型 compel 有保存但无更新 例:Javac
解释型 无保存实时更新
1. 所有标识符应以字母,美元符号,或下划线开始
2.首字母后可以是字母,数字,美元符号,下划线
3.不能使用关键词作为方法名或变量名
4.可以使用中文或拼音(但不建议)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AVGr3B0O-1625991942286)(F:\design\Java\code\图片\屏幕截图 2021-07-09 090045.jpg)]
数据类型
强类型语言
要求变量的使用符合规定,所有变量先定义在使用
弱类型语言
JAVA的数据类型分为两大类:
基本类型
- 数值类
1.整数类型
- byte占1个字节 -128~127
- short占2个字节 -32768~32767
- int占4个字节 -2147483648~21448367
- long占8个字节 Long a=30L 数字之后加L
2.浮点型
- float占4个字节 float a=30.1F数字后加F
- double占8个字节
3.字符型 char占2个字节 String=“ABC”//为类不为类型
单引号引的数据 是char类型的,双引号引的数据 是String类型 的;单引号只能引一个字符,而双引号可以引0个及其以上。char只是一个基本类型,而String 可以是一个类,可以直接引用。
2.逻辑类 boolean:占一位 仅有True或False
引用类型
- 类
- 接口
- 数组
进制:二进制0b 十进制 八进制0 十六进制0x (开头)
int i=10;
int i=010;//八进制
int c=0x10;//十六进制
浮点数有限离散 四舍五入 接近不等于 最好不用浮点数进行比较
例:
float d1=2314f;
float d2=d1+1;
System.out.println(d1==d2);//true
char c1='A';
char c2='中';
System.out.println(c1);
System.out.println(c1);//强制换行
//所有的字符本质还是数字
//编码Unicode表(97=a,65=A)
//U0000~UFFFF
char C3='\u0061';
System.out.println(C3);//a
//转义字符
//\t 制表符 表空格
System.out.println("Hello\tWorld");
//\n 换行
不同类型的数据先转换为同一类型,然后进行计算。
低—>高
byte,short,char | int long | float double
1.强制类型转换 高到低
int a=1;
long b=1;
结果: a=(int)b;
2.自动类型转换 低到高
结果:b=a
int i=128;
byte b=(byte)i;//内存溢出
3.包装类过渡类型转换
Java的包装类型对应于其基本类型一共有八类:Boolean,Byte,Character(char),Inteager,Short,Long,Float,Double
- 装箱
- 拆箱
public class HelloWorld{//class 为类
public static void main(String[] args)
{
//定义double类型变量
double a=91.5;
//手动装箱
Double b=new Double(a);
//自动装箱
Double c=a;
System.out.println("装箱后的结果为:"+b+"和"+c);//91.5和91.5
//定义一个Double包装类对象,值为87.0
double d=new Double(87.0);
//手动拆箱
double e=d.doubleVlue;
//自动拆箱
double f=d;
System.out.println("拆箱后的结果为"+e+"和"+f);//87.0和87.0
//包装类过渡的类型转换例子
short s=99;
Short s1=s;
byte b=s1.byteValue();//s1为类可以用byteValue()的方法(同理其他类型如double)
}
}
4.字符串类型和数据类型的转化
- int转换成string有以下三种方法(同理其他如double)
1.将基本数据类型和空字符串("")连接(+) //在第四天有面试题作为示例
int a=144;
String b=Integer.valueOf(a).toString();
System.out.println(b);//144
2.调用String类的valueOf()返回相应字符串
//valueOf()作用为返回数值Integer valueOf(String s, int radix): 返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值,以进制表示
int a=514;
String b=a+"";
System.out.println(b);//514
3.使用包装类的toString()。
int a=1919;
String b=String.valueOf(a);
System.out.println(b);//1919
- String转换成int(同理其他 如double)
1.运用parseInt(String s)
String str1="100";
int i=Integer.parseInt(str1);
//语法: static int parseInt(String s)
static int parseInt(String s, int radix)
- String->char
1.需要用到数组
String str="hello";
//String转换为char时,需要char类型的数组接收
char[] c=str.toCharArray();
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]+"\t");
}
Scanner类
属于引用类,使用该类型来完成用户键盘录入,获取到录入的数据
使用步骤
导包:import java.util.Scanner(System.in);
创建对象实例:Scanner sc=new Scanner(System.in);
调用方法:
1.int i=sc.nextInt();//用来接收控制台录入的数字(同理其他类型 double)
2.next()和nextLine()用来接收控制台录入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据.
next():
-
一定要读取到有效字符后才可以结束输入
-
对输入有效字符之间遇到的空格,next()方法自动将其去掉
-
只有输入有效字符后,才将其后面输入的空白作为分隔符或结束符
-
next()不能得到带有空格的字符
nextLine():
-
以Enter(回车键)为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
-
可以获得空格
注意点
- 不能对布尔值进行转换
- 不能把对象名转换成为不相干的类型
- 在高容量转换到低容量的时候,强制转换
- 转换的时候可能精度问题或内存溢出
(int)23.7//23
public class Demon6
{
public static void main(String[] args)
{
//操作大数时,注意溢出问题
//数字之间可以用下划线分割
int a=20;
int b=100000;
long total=a*(long)b;//a*b会先在int中溢出,可用强制类型转换先转化一个来进行
}
}