java语法基础

简单的第一个程序--"Hello World!"

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello World!");
    }
}

类(class):上面程序定义了一个类HelloWorld,该类的名字与.java文件的名字相同。

方法(method):类的内部定义了该类的一个方法main。

语句(statement):真正的“打印”功能由一个语句实现,即: System.out.println("Hello World!");

下面两点有关Java的书写方式:

Java中的语句要以;结尾 (与C/C++相同)。

用花括号{}来整合语句,形成程序块。通过程序块,我们可以知道程序的不同部分的范围,比如类从哪里开始,到哪里结束

编译与运行

Java程序要经过编译器编译才能执行。在Linux或Mac下,可以下载安装Java JDK。

 使用javac来编译。在命令行中输入下面语句编译:

javac HelloWorld.java

当前路径下,将有一个名为HelloWorld.class的文件生成。

使用java命令来运行。Java会搜寻该类中的main方法,并执行。

java HelloWorld

java内容:

一、变量和常量

二、运算符

三、流程控制语句

四、数组

五、方法

一、变量

Java中有数组(array)。数组包含相同类型的多个数据。我用下面方法来声明一个整数数组:

int[] a;

变量(variable)占据一定的内存空间。不同类型的变量占据不同的大小。

Java中的变量类型如下:

          存储大小     例值     注释
byte      1byte        3      字节
int       4bytes       3      整数
short     2bytes       3      短整数
long      8bytes       3      长整数
float     4bytes     1.2      单精度浮点数
double    8bytes     1.2      双精度浮点数
char      2bytes     'a'      字符
boolean   1bit      true      布尔值

 

在Java中,变量需要先声明(declare)才能使用。在声明中,我说明变量的类型,

赋予变量以特别名字,以便在后面的程序中调用它。你可以在程序中的任意位置

声明变量。 比如:

复制代码

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Declare in the middle:");
        int a;
        a = 5;
        System.out.println(a);  // print an integer
    }
}

复制代码

上面a是变量名。可以在声明变量的同时,给变量赋值,比如 int a = 5;

*** “变量”的概念实际上来自于面向过程的编程语言。在Java中,所谓的变量实际上是“基本类型” (premitive type)。我们将在类的讲解中更多深入。

上面的程序还可以看到,Java中,可用//引领注释。

上面的5 + 1也是一个表达式,等于6。

二、运算符

数学表达式

数学运算,结果为一个数值

1 + 2                  加法
4 - 3.4                减法
7 * 1.5                乘法
3.5 / 7                除法
7 % 2                  求余数

关系表达式

判断表达式是否成立。即一个boolean值,真假

a > 4.2                大于
3.4 >= b               大于等于
1.5 < 9                小于
6 <= 1                 小于等于
2 == 2                 等于
2 != 2                 不等于

布林表达式

两个boolean值的与、或、非的逻辑关系

true && false          and
(3 > 1) || (2 == 1)    or
!true                  not

位运算

对整数的二进制形式逐位进行逻辑运算,得到一个整数

&                      and
|                      or
^                      xor
~                      not
5 << 3                 0b101 left shift 3 bits
6 >> 1                 0b110 right shift 1 bit

还有下列在C中常见的运算符,我会在用到的时候进一步解释:

m++                    变量m加1
n--                    变量n减1

condition ? x1 : x2   condition为一个boolean值。根据condition,取x1或x2的值

表达式

表达式是变量、常量和运算符的组合,它表示一个数据。1 + 1是常见的表达式

再比如:

public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Declare in the middle:");
        int a;
        a = 5 + 1;
        System.out.println(a);  // print an integer
    }
}

常用的运算符

3-1什么是运算符

运算符是一种“功能”符号,用以通知 Java 进行相关的运算,譬如,我们需要将变量 age 的值设置为 20 ,这时候就需要一个“=”,告诉程序需要进行赋值操作。

Java 语言中常用的运算符可分为如下几种:

算术运算符

赋值运算符

比较运算符

逻辑运算符

条件运算符

特殊运算符

+=:c+=a等价于c=c+a   -=:c-=a等价于c=c-a
*=:c*=a等价于c=c*a   /=:c/=a等价于c=c/a
%=:模等于  c%=a等价于c=c%a

条件运算符

--例

在编辑器中的第 4 行输入代码,应用关系运算符实现 “判断:如果 score 大于或等于 60 ,输出及格,反之输出不及格“运行结果为: 考试成绩如何:及格

public class HelloWorld{
    public static void main(String[] args) {
        int score=68;
        String mark = (score>=60)? "及格" : "不及格";
        System.out.println("考试成绩如何:"+mark);
    }
}

三、流程控制语句

条件语句if

if(条件){

条件成立时执行的代码

}

int score=92
if(score>90){
   System.out.println("奖励一个IPHONE 5S");
}

练习:

请在编辑器空白处补全代码,实现功能

“判断变量 one 的值是否是偶数”

运行结果为: one是偶数。

public class HelloWorld {
    public static void main(String[] args) {
        int one = 20 ;
    if(one%2=0){
      System.out.println("one是偶数");   
    }  
    }
}

条件语句if...esle

if(条件的布尔表达式){

代码块1

}

else{

代码块2

}

int score=85;
if(score>90){
   System.out.println("奖励一个IPHONE 5S");
}
else{
   System.out.println("罚做500个俯卧撑");
}

条件语句多重if

if(条件1){

代码块1

}

else if(条件2){

代码块2

}

else{

代码块3

}

int score=85;
if(score>90){
   System.out.println("奖励一个IPHONE 5S");
}else if(score>70){
   System.out.println("奖励一个红米");
}else{
   System.out.println("罚做500个俯卧撑");
}

练习:

请在编辑器中应用多重 if 语句,补全代码实现如下功能:
假设年龄大于 60 岁,则提示“老年”;如果年龄介于 40 岁至 60 岁之间,则提示“中年”;如果年龄介于 18 岁至 40 岁之间,则提示“少年”;18 岁以下则提示“童年” 运行结果为: 少年

public class HelloWorld {
    public static void main(String[] args) {
        int age=25;
    if(age>60){
        System.out.println("老年");
    else if(age>=40){
        System.out.println("中年");
    else if(age>=18){
        System.out.println("少年");
    else(age<18){
        System.out.println("童年");
  }
   }
    }
      }
        }
}

条件语句嵌套if

if(条件1){

   if(条件2){

     代码块1

     }else{

     代码块2

     }

}else{

     代码块3

}   

练习:
请在代码编辑器中补全代码实现赛程设置:预赛成绩大于 80 分的可进入决赛,然后根据性别再划分为男子组决赛和女子组决赛。运行结果为: 进入女子组决赛

public class HelloWorld {
    public static void main(String[] args) {
        int score = 94;
        String sex = "女";
        if(score>80){
            if(sex="女"){
                System.out.println("进入女子组决赛");
            }else{
                System.out.println("进入男子组决赛");
            }
        }else{
            System.out.println("淘汰")
       }                
    }
}

条件语句switch
当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。
例如:根据考试的名次,给予前 4 名不同的奖品。第一名,奖励笔记本一台;第二名,奖励 IPAD 2 一个;第三名,奖励移动电源一个;最后一名奖励 U 盘一个。

语法:

switch(表达式){

  case值1:

  执行代码块1

  break;

  case值2:

  执行代码块2

  break;

  case值n:

  执行代码块n

  break;

  default:

  默认执行的代码

}  

注意:

1、 switch 后面小括号中表达式的值必须是整型或字符型

2、 case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2 ;但不能是变量或带有变量的表达式,如 a * 2

3、 case 匹配后,执行匹配块里的程序代码,如果没有遇见break 会继续执行下一个的 case 块的内容,直到遇到 break
语句或者 switch 语句块结束

练习:
请在代码编辑器中,使用 switch 语句补全代码,设置属于你的菜谱:如果今天是星期一、三、五,则早餐吃包子,如果是星期二、四、六,则早餐吃油条,如果是星期日,则吃“主席套餐”运行结果为: 吃主席套餐

public class HelloWorld {
    public static void main(String[] args) {
        char today='日';
        switch(today){
            case'一':
            case'三':
            case'五':
                 System.out.println("吃包子");
                 break;
            case'二':
            case'四':
            case'六':
                System.out.println("吃油条");
                break;
            default:
                System.out.println("吃主席套餐");          
        }                
    }
}

(Java 常用的 3 种循环: while 、 do...while 、 for)

循环语句while

语法:
while(判断条件){
   循环操作
}

练习:
实现功能:顺序输出 1 ~ 5 这 5 个数字

public class HelloWorld {
    public static void main(String[] args) {        
    int i = 1;       
    while (i<5) {
           System.out.println(i);
           i++;
    }
    }
}

循环语句do...while

语法:

do{

   循环操作

}while(判断条件);

实现功能:顺序输出 1 ~ 5 这 5 个数字

public class HelloWorld {
    public static void main(String[] args) {        
    int i = 1;       
    do {
           System.out.println(i);
           i++;
    }while(i<=5);       
    }
}

练习:
实现功能:计算 50 以内(包括 50 )的偶数之和

public class HelloWorld {
    public static void main(String[] args) {
        int sum = 0; // 保存 1-50 之间偶数的和
        int num = 2; // 代表 1-50 之间的偶数
        do {
            //实现累加求和   
            sum = sum + num;
        num = num + 2; // 每执行一次将数值加2,以进行下次循环条件判断    
        } while (num<=50); // 满足数值在 1-50 之间时重复执行循环
        System.out.println(" 50以内的偶数之和为:" + sum );
    }
}

--循环语句for
Java 的循环结构中除了 while 和 do...while 外,
还有 for 循环,三种循环可以相互替换。

语法:
for(循环变量初始化;循环条件;循环变化){
    循环操作
}

--例
输出 1000 遍“我爱慕课网”,使用 for 的实现代码为:

for(int i=1; i<=1000; i++){
    System.out.println("我爱慕课网");
}

练习:
实现功能:计算 1 到 100 之间不能被 3 整除的数之和

public class HelloWorld {
    public static void main(String[] args) {
        int sum = 0; // 保存不能被3整除的数之和
        // 循环变量 i 初始值为 1 ,每执行一次对变量加 1,只要小于等于 100 就重复执行循环
        for (int i = 1;i<=100;i++) { 
            // 变量 i 与 3 进行求模(取余),如果不等于 0 ,则表示不能被 3 整除
            if (i % 3 != 0) {
                sum = sum + i; // 累加求和
            }
        }
        System.out.println("1到100之间不能被3整除的数之和为:" + sum);
    }
}

循环跳转语句break

使用循环输出 1--10的数值,其中,如果数值大于 2 ,并且为 3 的倍数则停止输出。

public class HelloWorld {
    public static void main(String[] args) {
    for(int i=1;i<=10;i++){
    if((i>2)&&(i%3=0)){
        break;
      }
      System.out.println(i);
      }
      System.out.println("结束啦");
}

--练习
实现功能:循环将 1 到 10 之间的整数相加,如果累加值大于 20,则跳出循环,并输出当前的累加值。

public class HelloWorld {
    public static void main(String[] args) {
               // 保存累加值
        int sum = 0;     
        // 从1循环到10
        for (int i = 1; i <= 10; i++) { 
            // 每次循环时累加求和
            sum = sum + i;
            // 判断累加值是否大于20,如果满足条件则退出循环
            if (sum>20) {
                break;
                System.out.print("当前的累加值为:" + sum);
                //退出循环                
            }
        }
    }
}

循环跳转语句continue

打印 1--10 之间所有的偶数,使用 continue 语句实现代码为:

for(int i=1;i<=10;i++){
    if(i%2!=0){
//判断i是否是偶数
      continue;//通过continue结束本次循环,直接进行下一次循环
      }
      System.out.println(i);
}

练习:
实现功能:求 1 到 10 之间的所有偶数的和。

public class HelloWorld {
    public static void main(String[] args) {
        int sum = 0; // 保存累加值
        for (int i = 1; i <= 10; i++) {
            // 如果i为奇数,结束本次循环,进行下一次循环
            if (i%2!=0) {
                continue;                
            }
            sum = sum + i;
        }
        System.out.print("1到10之间的所有偶数的和为:" + sum);
    }
}

循环语句多重循环
1.打印长方形
********
********
********

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("打印长方形");
        // 外层循环控制行数
        for (int i = 1;i<=3;i++) {
            for (int j = 8;j<=8;j++)
                System.out.print("*");
            }     
            // 每打印完一行后进行换行
            System.out.println();
        }
    }
}

2.打印直角三角形
*
**
***

public class HelloWorld {
    public static void main(String[] args) { 
        System.out.println("打印直角三角形");
        // 外层循环控制行数
        for (int i = 1;i<=3;i++) {
            // 内层循环控制每行的*号数
            // 内层循环变量的最大值和外层循环变量的值相等
            for (int j = 1;j<=i;j++) {     
                System.out.print("*");
            }
            // 每打印完一行后进行换行
            System.out.println();
        }
    }
}

编程练习

1.判断一个数(小于10位)的位数。输入999,则输出 “它是个3位的数!”

public class HelloWorld{
public static void main(String[] args){
int num = 999;                      //整型 去小数点
int count = 0;                      //整型 去小数点
if (num >= 0  && num<=999999999){   //定位小于10位数
while(num != 0){                    //判断num不等于0 继续循环
count++;                            //num不等于0 count加1
num/=10;                            /* num=num/10  第一次循环 99.9 取整 99 继续循环 直到0.99取整 等于0 停止循环 */
}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}
}
}

2.功能描述:为指定成绩加分,直到分数大于等于 60为止,输出加分前和加分后的成绩,并统计加分的次数

public class HelloWorld {
    public static void main(String[] args) {
        // 变量保存成绩
        int score = 53;
        // 变量保存加分次数
        int count = 0;
        //打印输出加分前成绩
        System.ou.println("加分前成绩:"+score); 
        // 只要成绩小于60,就循环执行加分操作,并统计加分次数
        if(score<60){
            score++;
            count++;
        }       
        //打印输出加分后成绩,以及加分次数
        System.out.println("加分后成绩:"+score);
        System.out.println("共加了"+count+"次");
    }
}

数组

在声明数组时,数组所需的空间并没有真正分配给数组。我可以在声明的同时,用new来创建数组所需空间:

int[] a = new int[100];

这里创建了可以容纳100个整数的数组。相应的内存分配也完成了。

 我还可以在声明的同时,给数组赋值。数组的大小也同时确定。

int[] a = new int[] {1, 3, 5, 7, 9};

*使用int[i]来调用数组的i下标元素。i从0开始。

其他类型的数组与整数数组相似。

一维数组

int arr[];  声明int型数组

String str[];  声明String数组

arr=new int[5];  为数组分配内存

int month[]=new int[12];  声明的同时为数组分配内存

初始化一维数组

第一种方法:int arr[]=new int[]{12,13,14};

第二种方法:int arr[]={12,13,14};

在项目中创建类GetDay,在主方法中创建int型数组,并实现将各月的天数输出。

public class GetDay{
    public static void main(String[] args) {
       //创建并初始化一维数组
       int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
       for(int i=0;i<12;i++){
           System.out.println((i+1)+"月有"+(day[i])+"天");
    }
  }
}

实际开发中我们经常使用循环控制数组成员的操作。如:

int[] scores={78,91,84,68};
for(int i=0;i

练习

任务要求:

1、 定义一个整型数组,并赋初值 61, 23, 4, 74, 13, 148, 20

2、 定义变量分别保存最大值、最小值、累加值和平均值,并假设数组中的第一个元素既为最大值又为最小值

3、 使用 for 循环遍历数组中的元素,分别与假定的最大值和最小值比较。如果比假定的最大值要大,则替换当前的最大值;
如果比假定的最小值要小,则替换当前的最小值;

4、 循环执行过程中对数组中的元素进行累加求和

5、 循环结束根据累加值计算平均值,并打印输出相关内容

public class HelloWorld {
    public static void main(String[] args) {
        // 定义一个整型数组,并赋初值
    int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };   
    int max = nums[0]; // 假定最大值为数组中的第一个元素
    int min = nums[0]; // 假定最小值为数组中的第一个元素
        double sum = 0;// 累加值
        double avg = 0;// 平均值 
for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
        // 如果当前值大于max,则替换max的值
        if(nums[i]>max){
         nums[i]=max;   
        }
        // 如果当前值小于min,则替换min的值
        if(nums[i]

使用 Arrays 类操作 Java 中的数组

Arrays 类是 Java 中提供的一个工具类,在 java.util包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~)。

Arrays 中常用的方法:

1.排序

//导入Arrays类
import java.until Arrays;
public class HelloWorld {
    public static void main(String[] args) {
//定义一个整型数组
int[]scores={78,93,97,84,63}
//使用Arrays类的sort()方法对数组进行排序
Arrays.sort(scores);
System.out.println("排序后数组中元素的值:");
//循环遍历输出数组中元素的值
for(int i=0;i

2.将数组转换为字符串

语法:  Arrays.toString(数组名);可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如:

import java.until Arrays;
public static void main(String[] args){
//定义一个整型数组
int[]nums=new int[]{25,7,126,53,14,86};
//使用Arrays类的toString()方法将数组转换为字符串并输出
System.out.println("输出数组nums中的元素:"+Arrays.toString(nums));
}

在编辑器中定义了一个数组 hobbys ,请在第 2、11、14行中将代码填写完整,实现使用 Arrays 类对数组进行排序并转换输出。运行结果为: [ game , movie , sports ]

//导入Arrays类
import java.until Arrays;
public class HelloWorld {
    public static void main(String[] args) { 
        // 定义一个字符串数组
        String[] hobbys = { "sports", "game", "movie" };
        // 使用Arrays类的sort()方法对数组进行排序
        Arrays.sort(hobbys);
        // 使用Arrays类的toString()方法将数组转换为字符串并输出
        System.out.println(Arrays.toString(hobbys));
    }
}

--使用 foreach 操作数组

在编辑器中定义了一个整型数组 scores ,保存学生成绩信息,通过 Arrays 类的 sort 方法对成绩数组进行排序,然后使用foreach 遍历输出数组中的元素。

import java.util.Arrays;
public class HelloWorld {
    public static void main(String[] args) {
        // 定义一个整型数组,保存成绩信息
        int[] scores = { 89, 72, 64, 58, 93 };
        // 对Arrays类对数组进行排序
        Arrays.sort(scores);
        // 使用foreach遍历输出数组中的元素
        for (int socre : scores) {
            System.out.println(score);
        }
    }
}

 

你可能感兴趣的:(java)