基础语法
别人问我:你编程能力是什么级别,那肯定是“hello,world”级别,别问为什么,问就是只会“hello,world”。
让我们看一下java输出“hello,world”的方法。
hello,world
public class HelloWorld {
public static void main(String[] args){
System.out.print("hello,world");
}
}
此文件应为HelloWord.java
注意:
以public修饰的类的类名必须为文件的文件名。
以上为例,public class HelloWorld中类(class)HelloWord是被public修饰,因此文件名必须为HelloWorld.java.(如果你不理解修饰是什么意思,在此不必过多纠结)
Java的运行机制
Java为什么能够受欢迎?在我问这个问题的时候,你应该就能察觉到,受欢迎的原因之一应该和Java的运行机制有关。
java文件的编译过程:
程序员编写 xxx.java 文件
javac 编译为字节码文件 xxx.class,
JVM 编译成电脑所熟知的0,1组合
不同的系统可以装不同的JVM,Windows安装Windows版本的JVM、Mac安装Mac版本的JVM,实现同一段代码在不同的操作系统也能上运行。
基础语法
注释
注释:字面意思,就好比看文章,在文章旁添加注释,不影响原文内容,只为方便后续自己再次或他人阅读时容易理解。
注释要勤加,但不要乱加!
// 两条斜杠 的注释为单行注释,只管一行
/*
以 斜杠+星 开始
星+斜杠 结束的注释为多行注释
在此范围内的所有内容均为注释
*/
/**
* 以 斜杠+双星 开始
* 星+斜杠 结束的注释为文档注释
*/
标识符
标识符是干什么用的。
从日常生活来看,标识符就是名字,好比说张某某,李某某,喊到哪个名字,你大脑中就应该会有这个人的相貌,身高等,这个名字就可以看作标识符。
在Java当中,常量、变量、函数、类等都需要一个名字,这些名字统称标识符。
标识符由字母、数字、_(下划线)、$组成
不能以数字开头
不能用Java中的保留字
标识符大小写敏感
如:
a和A是两个不一样的标识符。
关键字
亦称保留字
关键字在程序中有其特殊意义,如public,class等53个此类文字字符,在此先不做过多阐述。
数据类型
Java有八种基本数据类型,它们分别是:
byte、short、int、long、float、double、boolean和char
其中
整型 :byte、short、int、long
字符型 :char
浮点型 :float、double
布尔型 :boolean
整形
byte
min:-128(-2^7)
max:127(2^7-1)
默认值:0
short
min:-32768(-2^15)
max:32767(2^15-1)
默认值:0
int
min:-2,147,483,648(-2^31)
max:2,147,483,647(2^31-1)
默认值:0
long
min:-9,233,372,036,854,775,808(-2^63)
max:9,223,372,036,854,775,807(2^63-1)
默认值:0
浮点型
浮点数的默认类型为double类型
float
单精度 32位
默认值:0.0f
double
双精度 64位
默认值:0.0d
字符型
char类型是一个单一的16位Unicode字符。
min:\u0000(0)
max:\uFFFF(65,535)
布尔型
boolean
取值:true / false默认值:false
数据类型的转换
byte、short、int、long、float、double
从左到右可自动转换,从右向左需要强制转换
可以想象一下
byte相当于100ml的水杯,short相当于200ml的水杯
将byte水杯里的水倒入short水杯里自然没有问题
但从short水杯里将水倒入byte水杯里则有可能发生溢出
那么我应该如何将short水杯里的水倒入byte水杯里呢
强制转换
short a = 100; //short -> byte byte b = (byte) a;
int a = 100; //int -> short short b = (short) a; //int -> byte byte c = (byte) a;
省略几行
double a = 100; //double -> float float b = (float) a; //double -> long long c = (long) a; //double -> int int d = (int) a; //double -> short short e = (short) a; //double -> byte byte f = (byte) a;
常量、变量
变量如其名,就是可以改变的量,那与之相对的常量就是不可改变的量。
常量是指在程序运行期间不可改变的量
如下:
final double PI = 3.14; int a = 100; a = 2 + 3;
上方代码中的被final修饰的PI以及100,2,3都被称为常量,a则被称为变量。
变量
Java程序中最基本的储存单元
要素包括变量名,变量类型和作用域
每个变量都有类型,类可以是基本类型也可以是引用类型。
变量名必须是合法的标识符。
int a = 1; double b = 2;
变量的作用域
变量可分为静态变量、成员变量和局部变量
类变量
作用域:全局
成员变量
作用域:类
局部变量
作用域:局部
public class HelloWorld { //类变量 public static int a = 10; //成员变量 int b; public static void main(String[] args) { //局部变量 final intc = 100; } }
运算
算数运算符
7 + 3 // = 10 7 - 3 // = 4 7 * 3 // = 21 7 / 3 // = 2 7 % 3 // = 1
自增自减
int a = 1; int b = 1; int c = 1; int d = 1; a ++ // = 1 ++ b // = 2 c -- // = 1 -- c // = 0
赋值运算符
a += 1 // a = a + 1 a -= 1 // a = a - 1 a *= 1 // a = a * 1 a /= 1 // a = a / 1 a %= 1 // a = a % 1
关系运算符
>、<、>=、<=、==(相等)、!=(不等)
比较运算符的结果是布尔型,成立为ture,不成立为false
2 > 3 // false 2 < 3 // true 2 >= 3 // false 2 <= 3 // true 2 == 3 // false 2 != 3 // true
逻辑运算符
&&(与)、||(或)、!(非)true && false // false true && true // true true || false // true false || false // false
流程控制
顺序结构
顺序结构是最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行。程序按照从上到下的顺序执行。
System.out.println(1); System.out.println(1); System.out.println(1); //从上到下依次执行
分支结构
用于判断,在平时生活中经常遇到,比如:
如果我高考成绩超过700分,我就上A大学,如果没超过700,但是超过600了,我就上B大学,不然我就回家种地在这种情况下,我们可以这样写:
int a = 高考成绩; if(a > 700) System.out.println("我要上A大学"); else if (a > 600) System.out.println("我要上B大学"); else System.out.println("我要回家种地");
if
if分为单分支、双分支、多分支和if嵌套
单分支:
if(2 > 1){ System.out.println("嘟嘟噜"); }
双分支:
if(true){ System.out.println("这是第一个分支"); }else{ System.out.println("这是第er个分支"); }
多分支:
以考试成绩为例
int s = 85; if(s >= 80) { System.out.println("优"); }else if(s >= 60){ System.out.println("及格"); }else{ System.out.println("不及格"); }
if嵌套
if(条件1) { if(条件2) { 代码块1 } else { 代码块2 } } else { 代码块3 }
switch
switch着重于处理等值的条件判断
如果case执行完后需要跳出,就需要在case语句块后添加break
switch(表达式){ case 值1: 语句块1; break; ..... case 值N: 语句块N; break; default: 语句块; }
以“三哥”家种姓制度为例举例
int rank = 'A'; switch (rank){ case 'A': System.out.println("婆罗门"); break; case 'B': System.out.println("刹帝利"); break; case 'C': System.out.println("吠舍"); break; default: System.out.println("首陀罗"); }
循环结构
for
先判断再执行,循环次数确定
for(初始值;条件表达式;迭代语句){
循环体;
}
如:输出1 到99
for(int i = 1; i < 100;i ++){ System.out.println(i); }
while
先判断再执行,循环次数不确定
While(条件判断){
循环体
迭代语句
}
如:输出1 到99
int i = 1; while(i < 100){ System.out.println(i); i ++; }
do ··· while
先执行再判断,循环次数不确定
do{
循环体
迭代语句
}While(条件判断);
如:输出1 到99
int i = 1; do{ System.out.println(i); i ++; }while(i < 100);
流程跳转
break
用于do-while、while、for、switch中时,可跳出循环而执行循环后面的语句
continue
用于循环中,跳过本次循环,执行下一次循环
return
结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束,不管这个return处于多少层循环之内。
Scanner
Scanner类,获取用户输入
import java.util.Scanner; public class Hello { public static void main(String[] args) { Scanner sc = new Scanner(System.in); if (sc.hasNext()) { String str = sc.next(); System.out.println(str); } } }
打印出输入的信息