Java程序基础
1.程序代码基本结构
public class Main{
public static void main(String[] args){
//主方法
System.out.println("Hello World!");
}
}
注意需要区分大小写,java语言严格区分大小写;如果不按照规则编写,会出现红色波浪线报错:
![](https://i-blog.csdnimg.cn/blog_migrate/32c3844d919acc01a23b582b635d77f2.png)
2.注释
添加双斜杠//之后(自动变成灰色),后续文本不发生换行,那么都会被认为是一段注释,并不属于程序
public class Main{
public static void main(String[] args){
System.out.println("Hello World!"); //这段代码的意思是打印HelloWorld
}
}
多行注释 /* */ 这里面的内容,无论多少行都可以
public class Main{
public static void main(String[] args){
/*
ddddd
snut-s
hhhhh
*/
}
}
/** 来进行更加详细的文档注释
![](https://i-blog.csdnimg.cn/blog_migrate/7ebb9c2e155687b8cf96e6813050ecb7.png)
3.变量与常量
要声明一个变量,我们需要使用以下格式:
[数据类型] [变量名称];
标识符可以由大小写字母、数字、下划线(_)和美元符号 ($) 组成,但是不能以数字开头。
变量不能重复定义,大小写敏感,比如A和a就是两个不同的变量。
不能有空格、@、#、+、-、/等符号。
应该使用有意义的名称,达到见名知意的目的(一般我们采用英文单词),最好以小写字母开头。
不可以是 true 和 false。
不能与Java语言的关键字或是基本数据类型重名,关键字列表如下:
数据类型: | boolean、int、long、short、byte、float、double、char、class、interface。 |
流程控制: | if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。 |
修饰符: | public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。 |
动作: | package、import、throw、throws、extends、implements、this、supper、instanceof、new。 |
保留字: | true、false、null、goto、const。 |
public class Main{
public static void main(String[] args){
int a; //声明一个整数类型变量a
a=111;
int A=10; //表示A的初始值为10,这里的10是一个常量数字
}
}
当我们希望变量的值一直保持不变,我们就可以将其指定为常量:
public class Main{
public static void main(String[] args){
final int a=666; //在变量前面添加final关键字,表示这是一个常量
a=777; //常量的值不允许发生修改
System.out.println();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/befa5811060a596f89888f9a7f752155.png)
程序报错
基本数据类型
1.计算机中的二进制表示
因为我们的计算机是电子的,电平信号只有高位和低位,因此只能使用2进制表示我们的数字,比如:111=2^2+2^1+2^0
一个位也叫一个bit,8个bit称为1字节,16个bit称为一个字,32个bit称为一个双字,64个bit称为一个四字,我们一般用字节来描述数据大小。
小b表示的是bit,大B表示的是Byte字节(8bit=1Byte字节)
2.整数类型
在Java中,整数类型包括以下几个:
byte字节型(8个bit-1字节)范围:-128~+127
short短整型(16个bit-2字节)范围:-32768~+32767
int整型(32个bit-4字节)范围:-2147483648-+2147483647
long长整型(64个bit-8字节)范围:-9223372036854775808~+9223372036854775807
由于都可以表示整数,所以我们可以将小的整数类型值传递给大的整数类型:
public class Main{
public static void main(String[] args){
short a=10;
int b=a; //小的类型可以直接传递给表示范围更大的类型
}
}
反之会出现报错:
![](https://i-blog.csdnimg.cn/blog_migrate/ee32c1d4e61e22629db0f64ffe6ff42e.png)
public static void main(String[] args){
byte b=10; //默认情况下是int类型,由于正好在对应类型可表示的范围内,所以直接转换为byte型
}
由于直接编写的整数常量默认为int,所以会出现以下情况:
![](https://i-blog.csdnimg.cn/blog_migrate/ddb3d6f23e8963a1f176d302ec9db1f1.png)
需要在后面添加大写L或者小写l
public static void main(String[] args){
long b=6665555555L; //这样就可以正常编译通过了
}
3.浮点类型
float 单精度浮点型(32bit-4字节)
double 双精度浮点型(64bit-8字节)
public static void main(String[] args){
double a=100.5;
double b=66; //整数类型常量也可以隐式转换到浮点类型
}
小数类型常量默认都是double类型,给float类型赋值:
public static void main(String[] args){
float a=100.5F; //添加F或f
}
隐式类型转换规则:
byte->short(char)->int->long->float->double
4.字符类型
char字符型(16个bit-2字节,不带符号)范围:0-65535
public static void main(String[] args){
char c=65;
System.out.println(c); //打印出A
}
public static void main(String[] args){
char c='A';
}
当我们需要打印一连串的字符,可以使用字符串:
public static void main(String[] args){
String str="你好"; //用双引号括起来
}
String类型不是基本数据类型!!它是对象类型
5.布尔类
是一个比较特殊的类型,不存放数字,而是状态:
true - 真 false - 假 (通常用作流程控制判断语句)
public static void main(String[] args){
boolean a=true;//值只能是true或false
}
运算符
赋值运算符
public static void main(String[] args){
int a;
int b=a=6; //使用等号进行赋值,按照从右往左顺序计算
}
算术运算符
public static void main(String[] args){
int a=1,b=5;
a=a+b;
System.out.println(a*b);
System.out.println(a/b);//简单运算。两个整数进行除法运算,得到的结果为整数
System.out.println(a%b);//取模运算
}
当不同类型进行运算:
小类型转换为大类型,(整数和小数进行运算)整数转换为小数
运算符之间是有优先级之分的,比如乘除法优先级高于加减法:
public static void main(String[] args){
System.out.println(1+2*2); //得到结果5
}
自增自减运算符
public static void main(String[] args){
int a=999;
++a;
a++; //a自增1
}
a++和++a的差别:
![](https://i-blog.csdnimg.cn/blog_migrate/61cbc0c9b849645b705cb314c945204e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/07762a3d43c113126e916746ce4638fc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/478dd1d7a517a95e26e77bc1609cea57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/33551c38f878aea5196ad88bf6e3d226.png)
位运算符
&、|、^、~
关系运算符
>大于 <小于 ==等于 !=不等于 >=大于等于 <=小于等于
逻辑运算符
&& 与运算,要求两边同时为true才能返回true
|| 或运算,要求两边至少要有一个为true才能返回true
! 非运算
三元运算符(表达式?结果1:结果2)
如:当a!=10时 给b赋值“hello”
当a==10时 给b赋值“hi”
public static void main(String[] args) {
int a=10;
String b=a==10?"hello":"hi";
System.out.println(b);//输出hello
}
public static void main(String[] args) {
int a=11;
String b=a==10?"hello":"hi";
System.out.println(b);//输出hi
}
流程控制
选择结构
if(条件判断) 判断成功执行的代码;
public static void main(String[] args) {
int a=11;
if(a>1)
System.out.println(a);
else
System.out.println(-a);
}
int a…… ;
if(……)
System.out.println(……);
else if(……){
a++;
System.out.println(……);
}
else
……
switch:
switch(目标){
case 匹配值:
代码……
break;//终止运算用break结束,否则继续到下一个case
}
除了精准匹配之外,其他情况我们可以用default来表示:
switch(目标){
case 匹配值:
代码……
default://其他情况执行
}
循环结构
for(表达式1;表达式2;表达式3)
1:仅在开始执行一次
2:判断语句,为真继续循环,否则结束循环
3:每次循环完后执行一次
for循环嵌套:
public static void main(String[] args) {
int a=3;
for(;a>0;a--)
for(int b=2;b>0;b--)
System.out.println("yes");
}
![](https://i-blog.csdnimg.cn/blog_migrate/72376c87cf8de7b45c3c8a7b7cd8e91a.png)
关键字:
continue //跳过本轮循环,直接开启下一轮
break //终止整个循环,跳出到循环外部
break和continue在多重循环嵌套下,它只对离它最近的循环生效(就近原则)
while:
while(循环条件) 循环体;
public static void main(String[] args) {
int i=10;
while(i>0) {
System.out.println(i);
i/=2;
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/e2d800d2b89322ce619b4cc3cd9878db.png)
do-while:
do{
//无论满不满足循环条件,先执行循环体里面的内容
}while(循环条件);
public static void main(String[] args) {
int i=6;
do {
System.out.println(i);
i-=2;
}while(i>0);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6b665dd2698c94fe1fdbb67ee697f515.png)