Java学习——基础语法
1 第一个Java程序
- public class 后面采用的类名和文件名保持一样,一个Java程序里面只有一个public class;
- class后面类名必须以字母开头,后面可以跟字母和数字的任意组合;
- System.out.println()输出数据后换行; System.out.print()输出数据;
public class java_grammar {
public static void main(String[] args) {
System.out.println("hello word!");
System.out.print("hello");
System.out.print(" word!");
}
}
2 标识符
- 定义:Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
- 技巧:凡是自己可以起名字的地方都叫标识符
- 规则:由26个英文字母大小写,0-9 ,_或 $ 组成;数字不可以开头;不可以使用关键字和保留字,但能包含关键字和保留字;Java中严格区分大小写,长度无限制;标识符不能包含空格。
2.1 命名规范:
- 包名:多单词组成时所有字母都小写:xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
3 变量与常量
在 Java 中,利用关键字 final 指示常量,当一个变量被final修饰的时候,该变量只有一次赋值的机会
3.1 声明和赋值
声明变量
- 语法:<数据类型> <变量名称>
- 例如:int var;
变量的赋值
- 语法:<变量名称> = <值>
- 例如:var = 10;
声明和赋值变量
- 语法: <数据类型> <变量名> = <初始化值>
- 例如:int var = 10;
3.2 数据类型
3.2.1 整数类型
- java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
3.2.2 浮点类型
- Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
3.2.3 字符类型
- char 型数据用来表示通常意义上“字符”(2字节)
- Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符
- char类型的字面量值要用单引号括起来。例如:‘A’ 是编码值为 65所对应的字符常量
- char类型的值可以表示为十六进制值,其范围从 \u0000 到 \Uffff
3.2.4布尔类型
- boolean类型数据只允许取值true和false,无null
- 不可以使用0或非 0 的整数替代false和true,这点和C语言不同
3.2.5 字符串类型
- String不是基本数据类型,属于引用数据类型
- 使用方式与基本数据类型一致。例如:String str = “abcd”;
- Java 语言允许使用 + 号连接(拼接)两个字符串
- 可以使用 equals 方法检测两个字符串是否相等;例如:s.equals(t),如果字符串 s 与字符串 t 相等,则返回 true ; 否则,返回 false。
- 空串 “” 是长度为 0 的字符串;
- String 变量还可以存放一个特殊的值,名为 null, 这表示目前没有任何对象与该变量关联
3.2.6 代码解释
class DataType{
public static void main(String[] args) {
byte b = 1;
System.out.println(b);
short s = 200;
System.out.println(s);
int i = 300;
System.out.println(i);
long l = 400L; //java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
System.out.println(l);
char c = '中'; //字符常量是用单引号(‘’)括起来的单个字符
System.out.println(c);
//byte b2 = 200; 该行会出现编译错误,因为200是int型,变量赋予超出其范围的值
//char 只能存放一个字符,超过一个字符就会产生编译错误
//char c2 = '中国'; 报错
//char c3 = 'ab'; //报错
double d = 123.45;
System.out.println(d);
//float f = 54.321;该行会出现编译错误,因为54.321是double型的
float f2 = 54.321f; //Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
System.out.println(f2);
boolean b1 = true;
System.out.println(b1);
boolean b2 = false; //boolean类型数据只允许取值true和false,无null。
System.out.println(b2);
String str = "Hello Java"; //String不是基本数据类型,属于引用数据类型,字符串是用双引号(“”)括起来的
System.out.println(str);
}
}
3.3 数据类型转换
-
自动转换;容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为byte、short、char、int、long、float、double
-
强制类型转换;将容量大的数据类型转换为容量小的数据类型
class TypeConversion{
public static void main(String[] args) {
byte b = 5;
int i = 6;
System.out.println(i);
int i1 = 10;
int i2 = 300;
i = b;
System.out.println(i); //自动转换
b = (byte) i1; //强制转换
System.out.println(b); //因为i1的值是在byte范围之内,所以即便进行强制转换,最后得到的值,也是10
//因为i2的值是在byte范围之外,所以就会按照byte的长度进行截取
//i2的值是300,其对应的二进制数是 100101100
//按照byte的长度8位进行截取后,其值为 00101100 即44
b =(byte) i2;
System.out.println(b);
//查看一个整数对应的二进制的方法:
System.out.println(Integer.toBinaryString(i2));
System.out .println(3+4+"Hello!"); //输出:7Hello!
System.out.println("Hello!"+3+4); //输出:Hello!34
System.out.println('a'+1+"Hello!"); //输出:98Hello!
System.out.println("Hello"+'a'+1); //输出:Helloa1
}
}
4 运算符
4.1 算数运算符
4.2 赋值运算符
= += -= *= /= %=
4.3 比较运算符
4.4 逻辑运算符
&& || !
4.5 位运算
4.6 三元运算
- (条件表达式)?表达式1:表达式2;
4.7 运算符优先级
5 流程控制
5.1 if else
***
- else子句与最邻近的if构成一组。
5.2 switch
5.3 循环语句
1. while
2. do while
3. for
5.4 break、continue和return
- break语句用于终止某个语句块的执行
- continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
- return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束
- break只能用于switch语句和循环语句中。
- continue 只能用于循环语句中。
- 二者功能类似,但continue是终止本次循环,break是终止本层循环。
- break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
class HelloWorld {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("输入成绩:");
int score = scan.nextInt();
// if...else
if (score>90){
System.out.println("A");
} else if (90 >= score && score>80){
System.out.println("B");
}else if (80 >= score && score>70){
System.out.println("C");
}else if (70 >= score && score>60){
System.out.println("D");
}else {
System.out.println("不及格");
}
int day = 4;
//switch
switch(day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("这个是什么鬼?");
}
// while
int number = 1;
while (number<=7){
System.out.println(number);
number++;
}
// do while
do{
System.out.println(number);
number++;
}while (number<=7);
// for
for (int i = 0; i <7 ; i++) {
System.out.println(i);
}
// continue
for (int j = 1; j < 10; j++) {
if(0==j%2)
continue; //如果是双数,后面的代码不执行,直接进行下一次循环
System.out.println(j);
}
// break
for (int j = 1; j < 10; j++) {
if(0==j%2)
break; //如果是双数,结束当前循环
System.out.println(j);
}
}
}
6 输入输出
6.1Scanner用法
- 导入包 import java.util.Scanner
- 实例化:Scanner scan = new Scanner(System.in);
- 调用Scanner类的相关方法获取指定类型
6.2 print
- System.out.println()输出数据后换行; System.out.print()输出数据;
class ShuRu{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("姓名:");
String name = scan.next();
System.out.println(name);
System.out.println("年龄");
int age =scan.nextInt();
System.out.println(age);
System.out.println("体重");
double weight = scan.nextDouble();
System.out.println(weight);
double x = 1000/3.0;
int a = 1235;
String he = "helllo word";
System.out.println(a);
System.out.println(x);
System.out.printf("%d",a);
System.out.println();
System.out.printf("%d",a);
System.out.println();
System.out.printf("%x",a);
System.out.println();
System.out.printf("%s",he);
System.out.println();
//System.out.printf("%d",x);
System.out.printf("%8.2f",x);
System.out.println();
System.out.printf("%,.2f",x);
System.out.println();
}
}
7 数组
-
定义:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理
-
常见概念:数组名、下标、元素、长度
-
数组元素初始值
-
常见使用:
class ShuZu{
public static void main(String[] args) {
// 7.1 声明和初始化
int[] num; //声明
num = new int[]{1,2,3,4,5,6,7}; //静态初始化
String[] names = new String[5]; //动态初始化
//7.2 赋值
names[0] = "xiaoming"; //赋值
names[1] = "nihao";
names[2] = "wu";
names[3] = "ni";
names[4] = "hjk";
//7.3 数组长度
System.out.println(names.length);
System.out.println(num.length);
//7.4 遍历数组
for (int i = 0; i <names.length ; i++) {
System.out.println(names[i]);
}
//7.5 二维数组
int[][] arr = new int[][]{{1,2},{3,4,5},{6,7}};
int[][] arr1 = new int[3][2];
//7.6 调用二维数组元素
System.out.println(arr[0][1]);
System.out.println(arr1[0][1]);
//7.7 二维数组的长度
System.out.println(arr.length);
System.out.println(arr[0].length);
System.out.println(arr[1].length);
//7.8 二维数组遍历
for (int i = 0; i <arr.length ; i++) {
for (int j = 0; j <arr[i].length ; j++) {
System.out.print(arr[i][j]);
}
}
}
}