初学Java------Java的基本程序设计结构

目录

1.一个简单的Java应用程序

2.注释

3.数据类型

4.变量与常量

4.1 声明变量

4.2 变量初始化 

 4.3 常量

5.运算符

5.1 算术运算符

5.2 数学函数与常量

5.3 数值类型之间的转换

5.4 强制类型转换

5.5 结合赋值和运算符

5.6 自增自减运算符

5.7 逻辑运算符

5.8 位运算符

5.9 移位运算

5.10 条件运算符

6.字符串

6.1 子串

6.2 拼接

6.3 检测字符串是否相等

 6.4 空串与Null串

7.输入与输出

7.1 从键盘输入

 7.2 输出

8.程序逻辑控制

8.1 if 语句

8.2 switch语句

8.3 循环结构

8.3.1 while循环

8.3.2 do while 循环

8.3.3 for循环

9.break与continue的区别


1.一个简单的Java应用程序

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

这个程序虽然简单,但是基本上所有的Java程序都是具有这种结构的。

下面逐一看这几行代码:

public是关键字,称为访问修饰符,用于控制程序的其他部分对这段代码的访问级别。

关键字class说明Java程序中的全部内容都包含在类中。

class后紧跟类名。类名采用大驼峰的命名方式,所有单词的首字母必须大写,但是不能使用Java保留字(public ,class等)作类名。例如:FirstSample就是一个合法的命名。

源代码的{ }划分程序的各个部分(通常称为块),任何方法的代码用 { 开始,用 } 结束。

我们先不用管static void ,暂时把它们当作编译程序的必要部分。每个程序都必须有一个main方法。格式如下:

public class OneBlogs {
    public static void main(String[] args) {
        program statements
    }
}

 下来看这个代码:

    {
        System.out.println("Hello world!");
    }

 一对大括号表示方法体的开始与结束,使用System.out对象调用它的println方法。注意:"."用于调用方法。Java使用的通用语法是object.method(parameters),这等价于函数调用。

2.注释

Java中有三种表示注释的方法:

1. // 注释内容从//开始到本行行尾      2. /*    */注释界定符将一段较长的注释括起来

3.这种注释可以用来自动生成文档,/**       */

警告:Java中注释不能嵌套。

3.数据类型

Java是一种强类型语言,必须为每一个变量声明一种类型。Java中一共有8中基本类型,其中包括4种整型,2种浮点类型,1种字符类型char(用于表示Unicode编码的代码单元),1种表示真值的布尔类型boolean。

数据类型关键字内存占用范围
字节型byte1字节-128~127
短整型short2字节-32768~32767
整型int4字节-2^31~2^31-1
长整型long8字节-2^63~2^63-1
单精度浮点数float4字节
双精度浮点数double8字节
字符型char2字节0~65535
布尔型boolean没有明确规定

true和false

注意:

·不论是16位系统还是32位系统int都占4个字节。不论是32位系统还是64位系统long占8字节

·整型和浮点型都是带有符号的

·整型默认为int型,浮点型默认为double型

什么是字节?字节是计算机中表示空间大小的基本单位

4.变量与常量

4.1 声明变量

格式:数据类型   变量名        例:

int age;
double salary;
long earthPopulation;
boolean done;

 从中可以看出,每个声明都以分号结束。声明是一条完整的语句,分号在这里是必须加的。

tip:$是一个合法的Java字符,但是不要在代码中使用这个字符,它只在Java编译器或其他工具生成的名字中。

可以在一行中声明多个变量:

int i ,j, k;       //不提倡这种风格

逐一声明每个变量提高代码的可读性。

4.2 变量初始化 

声明一个变量后必须使用赋值语句对变量进行显式初始化。不能使用未初始化的变量。

否则:

public static void main(String[] args) {
        int i;
        System.out.println(i);
    }

这段代码会出现如下错误:

 要想对一个声明过的变量赋值就得把变量名放在 = 左边,值或者表达式放在 = 右边,例:

int age;
age = 10000;
int month;
month = 8;
int week = 6;

tip:在Java中,变量声明尽量靠近第一次使用的地方,这是一个比较好的编程习惯

 4.3 常量

在Java中,利用关键字指示常量,例如:

 public static void main(String[] args) {
       final double P_I_E = 3.14;
        System.out.println(P_I_E);
    }

tip : final表示的这个变量只能被赋值一次,一旦被赋值便不能再更改,习惯上,常量名全大写。

还有一种常量被称为类常量,这个常量可以在一个类的多个方法中使用,可以使用 static final 设置一个类常量,例如:

static final double P_I_E = 3.14;
    public static void main(String[] args) {
        System.out.println(P_I_E);
    }

 注意:类常量定义于类方法的外部。

5.运算符

运算符用于连接值

5.1 算术运算符

+ - * / 分别表示加 减 乘 除运算。

整数的取余操作符用 % 表示。例:15 % 7 == 1

当参与 / 运算的两个操作数都是整数,表示整数除法,否则表示浮点除法。

例:15 / 2 ==7 ;15 / 2.0 == 7.5 

5.2 数学函数与常量

在Math类中包含了各种各样的数学函数,使用前加上这样一句代码:

import static java.lang.Math.*;

sqrt :计算一个数的平方根 ,例:

import static java.lang.Math.*;
public class OneBlogs {
    public static void main(String[] args) {
        double a = 25;
        double b = sqrt(a);
        System.out.println(b);
    }
}

Math类中的sqrt方法不处理任何对象,这样的方法称为静态方法。

pow:表示幂运算 ,格式:pow(a , k)表示a的k次幂,例:

 public static void main(String[] args) {
        double a = 2;
        double b = 3;
        double c = pow(a,b);
        System.out.println(c);
    }

Java还提供两个用于表示 π 和 e 常量最接近的近似值:Math.PI       Math.E

5.3 数值类型之间的转换

 图中有箭头实线表示无数据丢失的转换,无箭头的实线表示有数据丢失的转换

Java中,当使用一个二元运算符连接两个值时,会先将两个操作数转换成同一种类型,再计算。

·有一个操作数是double类型,另一个也会转换成double类型

·有一个操作数是float类型,另一个也会转换成float类型

·有一个操作数是long类型,另一个也会转换成long类型

·否则其余都将转换成int类型

5.4 强制类型转换

上面提到必要时,int会转换为double类型,Java中允许经过强制类型转换将double转换为int,例:

double a = 3.5678;
int b = (int) a;

 这样经过上述代码 b的值为3,因为强制类型转换通过截断小数部分将浮点值转化为整型。

如果想对浮点数进行舍入运算,得到最接近的整数,就需要Math.round方法,例:

double a = 9.999;
int b = (int) Math.round(a);

注意:round方法的返回值为long类型,所以必须使用强制类型转换(int)。

5.5 结合赋值和运算符

+=    -=     *=     /=    %=     

例:a+=2   等价于  a=a+2

如果运算得到一个值与左侧操作数类型不同,就会发生强制类型转换,例:

int a;      //a是int类型
a+=2.2;     //是合法的等价于(int)(a+2.2)

5.6 自增自减运算符

++     --

i++与++i的结果都会使i进行加1,但它俩的区别主要在给表达式赋值的地方体现,例:

int i = 1;
int a = ++i;      //先进行++再给a赋值,所以a是2
int b = i++;      //先赋值再进行++,所以b还是1

--  与  ++一样

5.7 逻辑运算符

逻辑与:&&      逻辑或:||      逻辑非:!   这三个运算结果都是boolean类型,true或false

表达式1 && 表达式2,如果有一个表达式为假,结果就为假

表达式1 || 表达式2,如果有一个表达式为真,结果就为真

逻辑非!,假变真,真变假

5.8 位运算符

按位与 &:如果两个二进制位都是1,则结果为1,否则结果为0

10110101
11001101


10000101

按位或 |:如果两个二进制为都为0则结果为0,否则结果为1

按位取反 ~:如果该位为0则变为1,该位为1,则变为0

按位异或 ^:如果两个二进制位相同结果为0,不同为1

5.9 移位运算

左移<<:最左侧位不要了,右边补0

右移>>:最右侧位不要了,左边补符号位(正数补0,负数补1)

无符号右移>>>:最右侧位不要了,左侧补0

5.10 条件运算符

条件运算符也是Java中唯一一个三目运算符

表达式1?表达式2:表达式3          表达式1结果为真,则结果为表达式2,否则,为表达式3

代码示例:得到两个数的最大值 :

 public static void main(String[] args) {
       int a = 12;
       int b = 23;
       int max = a > b ? a : b;
        System.out.println(max);
    }

6.字符串

从概念上Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在Java类库中提供了一个预定义类,叫作String。用双引号括起来的字符串都是String类的实例:

String a = " ";
String names = "huanghe";

6.1 子串

String类的substring方法可以从一个较大的字符串提取出一个子串,例如:

String str = "hello world";
String str1 = str.substring(0,3);   //会创建"hel"这个字符串

注意:在substring中从0开始计数,这里从0开始到3结束(不包括3),也就是复制位置0,1,2

优点:容易计算子串的长度,上述例子中子串的长度为3-0=3。

6.2 拼接

Java允许使用 “+” 连接两个字符串,例:

String str1 = "hello";
String str2 = "world";
String str3 = str1 + str2;   //str3 = "helloworld"

注意:单词之间没有空格,+号完全按照给定的次序将两个字符串拼接起来。

这种特性常常用于输出语句中,例:

System.out.println("your name is"+name);

6.3 检测字符串是否相等

使用equals方法检测两个字符串是否相等,格式:str1.equals(str2)   , 其结果是布尔类型,可以定义一个布尔类型的变量接收结果,例:

public class OneBlogs {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "world";
        String str3 = "hello";
        boolean a = str1.equals(str3);
        System.out.println(a);
    }
}

运行结果:

 6.4 空串与Null串

空串" "是字符长度为0的字符串,可以调用以下代码检查一个字符串是否为空串

if (str.length()==0) 或者 if(str.equals(""))

String还可以存放一个特殊值为null,表示目前没有任何对象与该变量关联,检查一个字符串是否为null使用如下代码:

if( str == null )

7.输入与输出

7.1 从键盘输入

使用Scanner读取字符串,整数,浮点数

首先需要导入util包:import java .util .Scanner;

还需构造一个与“标准输入流”System.in关联的Scanner对象:

Scanner sc = new Scanner(System.in);

例:

 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
        System.out.println(name);
    }

如果想要读取一个整数,可以调用nextInt 方法(这种用的最多)例:

  Scanner sc = new Scanner(System.in);
        int age = sc.nextInt();

 7.2 输出

在这里介绍三种输出方法:

int age = 20;
 System.out.println(age);      //第一种:输出自动换行
 System.out.print(age);        //第二种:输出不换行
 System.out.printf("%d",age);  //第三种:格式化输出

格式说明符尾部的转换符指示要格式化的数值的类型:f表示浮点数,s表示字符串,d表示十进制数。

8.程序逻辑控制

8.1 if 语句

语法格式1:

if(布尔表达式){
          语句
      }

如果布尔表达式结果为true,执行大括号中的语句,否则不执行。

语法格式2:

if(布尔表达式){
          语句1;
      }else{
          语句2;
      }

如果布尔表达式结果为true执行语句1,否则执行语句2。

语法格式3:

 if(布尔表达式1){
          语句1;
      }else if(布尔表达式2){
          语句2;
      }else{
          语句3;
        }

 表达式1成立执行语句1,表达式2成立执行语句2,否则执行语句3。

注意:if else 语句中可以不加大括号,但是只能写一条语句(不建议这样使用),else与和它最近的 if 相匹配。实际开放中建议加上大括号。

8.2 switch语句

基本语法:

switch(表达式){
         case 1:
             语句1;
             break;
         case 2:
             语句2;
             break;
         case 3:
             语句3;
             break;
         ......
         default:
            不满足执行此语句;
            break;
     }

 执行流程:先计算表达式的值,然后与case比较,有对应的就执行对应的语句,遇到break结束,当表达式的值没有与之对应,就执行default下面的语句。

注意事项:· 多个case后的常量不可以重复

                  · switch的括号内只能是以下类型的表达式:

                                   基本类型:byte,char,short,int

                                   引用类型:String常量串,枚举类型

                   ·break不要遗漏,否则会失去“多分支选择”的效果

                   ·switch 虽然支持嵌套,但是不推荐

8.3 循环结构

8.3.1 while循环

语法格式:

  while(循环条件){
            循环语句;
        }

循环条件为true,执行循环语句,否则结束循环

代码实例:计算1-100的和:

public class OneBlogs {
    public static void main(String[] args) {
        int sum = 0;
        int n = 1;
        while(n<=100){
            sum+=n;
            n++;
        }
        System.out.println(sum);
    }
}

   注意事项:while下面的语句可以不写{},但只能写一条语句,建议加上{}

                     while后面的 { 建议和while写在同一行

                     while后面不要多写分号,否则导致循环不能正确执行     

8.3.2 do while 循环

语法格式:

 do{
          循环语句;
      }while(循环条件);

先执行循环语句,在判定循环条件,循环条件成立继续执行,否则循环结束

注意:while后面要加上分号

代码实例:打印1-10:

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

8.3.3 for循环

基本语法:

for(表达式1;布尔表达式2;表达式3){
           循环语句;
        }

· 表达式1:用于初始化循环变量的初始值设置,再循环的最开始,只执行一次

· 布尔表达式2:循环条件,满足循环继续,否则循环结束

· 表达式3:循环变量的更新方式

代码示例:打印1-10:

public class OneBlogs {
    public static void main(String[] args) {
      for(int i=1;i<=10;i++){
          System.out.print(i+" ");
      }
    }
}

注意事项:·for下面的语句可以不加{},但是只能执行一条语句,建议加上

                  ·for后面的 { 建议写在同一行

                  ·for后面不要多写分号,否则导致循环不能正确执行

9.break与continue的区别

break:break语句是终止整个循环,不会再去判断循环条件是否满足

continue:continue是只终止本次循环,不是终止整个循环

举一个打印1-5的例子体会以下用法:

continue:

public class OneBlogs {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++){
            if(i==3){
                continue;
            }
            System.out.println(i);
        }
    }
}

打印结果: 

              

 break:

public class OneBlogs {
    public static void main(String[] args) {
        for(int i=1;i<=5;i++){
            if(i==3){
                break;
            }
            System.out.println(i);
        }
    }
}

 打印结果:

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X_H学Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值