1.什么是带命令行参数?
例如:一个Hello.java文件
class Hello{
public static void main(String[] args){
System.out.println(args[0]);
}
}
代码中,主函数main()括号里面的String[] args 就是命令行参数,args是arguments(命令行参数)的缩写
在终端中用指令访问Hello.java的存储路径
第一步:编译 javac Hello.java
第二版:执行 java Hello HelloWorld (主要要空格)
终端输出:HelloWorld
args[0]: 类名(Hello)+第一个空格+字符串(HelloWorld)表示第一个空格后面的字符串
同理:args[1]、arg[2]。。。分别表示第几个空格后的字符串,如果写了args[n]但没有给它传入值,就会报空指针❌错误!
2.数据类型案例
整形:byte、short、int、long
浮点型:float、double
字符型:char
布尔型:boolean
补充:十六进制0x10转十进制
转换方法:十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值。
因此,10(十六进制)= 1×16^1 + 0×16^0 = 16(十进制)
在新建的java工程里面的 com.demo包里建一个FloatDemo类:
package com.demo;
public class FloatDemo {
public static void main(String[] args) {
//定义一个单精度浮点型变量,存放1234.328
//默认是double型,如果末尾什么都不写,就是double
float f=1234.328f;
System.out.println("f="+f);
//定义一个双精度浮点型变量,存放5623.465
//小的数据范围可以赋值给大的数据范围
//表示范围大的数赋值给表示范围小的是不允许的
double d=5623.465;
System.out.println("d="+d);
//int赋值给double类型
double d1=123;
System.out.println("d1="+d1);
}
}
double数据范围是最大的(8字节),可以存放以上任意的数据类型。
输出结果:
f=1234.328
d=5623.465
d1=123.0
3.基本数据类型变量的存储
栈、堆、常量池都是内存里面的
int n =100; 将100放到栈里面,直接用n来参与运算,n就是代表100。
4.字符型字面值
字面值是常量的一种
字符型的字面值用单引号内的单个字符表示
如:'a'、'b'、'$' 等
单引号中必须只有一个字符!
定义字符型变量
package com.demo;
public class CharDemo {
public static void main(String[] args) {
//定义一个变量存放字符a
char a='a';
System.out.println("a="+a);
char ch=65;
System.out.println("ch="+ch);
//字符类型的数据范围是0-65535,如果超过,需要进行强制类型转换
char ch1=65535;
System.out.println("ch1="+ch1);
//强制类型转换的结果,可能会造成数据的丢失
char ch2=(char)65536;
System.out.println("ch2="+ch2);
//定义变量存放Unicode编码表示的字符
char u='\u005d';
System.out.println("u="+u);
}
}
结果
a=a
ch=A
ch1=?
ch2=
u=]
为什么65赋值给ch是A呢?
原因:Ascll码
65-90表示:A-Z 97-122表示:a-z
Unicode编码:char u='\u005d';
Unicode表示法,在值前面加前缀\u
005d 是十六进制数:5*16+13=93 93对应的ascll码是:]
5.布尔型和字符串型的字面值
布尔值只能定义true和false
boolean b=true;
字符串不属于基本数据类型,属于类
字符串的字面值:双引号" "引起来的0个或者多个字符。
package com.demo;
public class StringDemo {
public static void main(String[] args) {
//定义一个空的字符串
String s1 ="";
System.out.println("s1="+s1);
//定义一个字符串,内容是Hello
String s2 ="Hello";
System.out.println("s2="+s2);
//定义一个字符串内容包含Unicode编码
String s3 ="A\u005d\u005fB";
System.out.println("s3="+s3);
//定义一个字符串内容包含空格的字符串
//空格也占用一个长度
String s4 ="Hello CSDN";
System.out.println("s4="+s4);
}
}
输出结果:
s1=
s2=Hello
s3=A]_B
s4=Hello CSDN
6、综合变量的案例
回车和换行不是一回事;
回车:光标回到这一行的最开始
换行:是指光标换到下一行
通常来说:回车是回车+换行两个效果
\b:相当于delete键
\t:相当于Tab键
package com.demo;
public class VarDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x,y;
x=3;
y=5;
//没有ln是不换行
System.out.print("x="+x);
System.out.print("y+"+y);
//\n是换行 \t是横向跳过
System.out.print("\n"+x+"\t"+y);
//\n是换行 \' 是单引号字符
System.out.println("\n\'"+x+" "+y+"\'");
// String 中国="中国";
// System.out.print(中国); //不建议用中文做变量名
//用科学计数法表示浮点型数据
double d =1.23E5;
float f=1.23e5f;
double d1=.2;
System.out.println("d="+d);
System.out.println("f="+f);
System.out.println("d1="+d1);
}
}
x=3y+5
3 5
'3 5'
d=123000.0
f=123000.0
d1=0.2
7、基本数据类型转换
类型转换:自动类型转换(隐式转换)和强制类型转换
自动类型转换:数据表示范围小的数据类型可以赋值给范围大的数据类型
强制类型转换:如果A类型的数据表示范围比B类型的大,则将A类型赋值给B类型,需要强制类型转换
如:
double d=123.4;
float f=(float)d;
强制类型转换的格式 需要转换的数据面前加个小括号(),括号里是需要转换的数据类型;
强制类型转换可能会造成数据丢失。
package com.demo;
public class TypeExchange {
public static void main(String[] args) {
// char 类型和int类型之间的转换
char c=(char)65536;//强制类型转换,char的数据表示范围0-65535
int n;
n=c;//隐式类型转换
c=(char)n;
//整形和浮点型的类型转换问题
int x=100;
long y=x;//小的赋值给大的
x=(int)y;//大的强制转换赋值给小的
float f=100000000000000L;
System.out.println("f="+f);
float f1=10340727677836L;
//long转换为float 会造成数据丢失,如上图虚线所示
System.out.println("f1="+f1);
}
}
输出:
f=1.0E14
f1=1.03407273E13
f1后面又几位没有显示出来,数据丢失了。
8、常量
什么是常量?
常量:不能变化的量
变量:可以变化的量
定义:变量定义前面加上final
常量命名的规则:fianl 数据类型 常量名=常量;
final double PI=3.14;
//PI的值不能再用
//PI=3.15 更改
//可以在上式子直接改PI的值,下面所用用到PI的值也全部随着变化
总结:
·标识符的命名规则
·关键字
·数据类型
·变量的定义和初始化
·基本数据类型和字面值
·Ascll码和Unicode编码
·类型转换