学习《Java核心技术》——第3章:基本程序设计结构

文章目录

javalearn-0

Java核心技术.卷I(第11版)

第3章:基本程序设计结构

1.总体过程

Hello.java

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

编译、运行

javac Hello.java
java Hello

javac程序是一个编译器,将Hello.java编译成Hello.class;(java代码由编译器编译成字节玛)

java程序启动虚拟机,虚拟机执行字节码。(字节码转为机器码)。

2.java数据类型

整型4种、浮点型2种、字符型1种、真值型1种

  • 整型

    • int:4字节、正负20亿( 2 31 − 1 2^{31}-1 2311)
    • short:2字节、-32768-32767( 2 16 − 1 2^{16}-1 2161)
    • long:8字节
    • byte:1字节

    没有无符号(unsigned)形式,使用他们的类(Byte,Long,Integer)可以处理

  • 浮点型

    • float:4字节、小数位有效位6-7位
    • double:8字节、小数位有效位15位

    浮点数默认为double,可以使用后缀fF跟在数字后面表示是float类型。也有dD

    浮点计算不精确,必要时使用BigDecimal类,如和钱相关的数据

  • 字符型

    • char:表示单个字符,中文需要2个字符

      十六进制表示:\u0000-\uFFFF\u是转义序列,后面跟4个十六进制数

      其他转移序列:

      • \b:退格
      • \t:制表
      • \n:换行
      • \r:回车
      • \":双引号
      • \':单引号
      • \\:反斜杠

      这些转义字符会在解析代码前先被处理,转成字符

      建议不在程序中使用char类型,除非处理UTF-16。在Java中,char与UTF-16对应

  • 真值型

    • boolean

3.变量和常量

常规规则:

  • 一般开头大写用作类

  • 变量用驼峰命名法,首字母小写

  • 常量用全大写

变量:

  • 变量的声明与初始化
    • 声明:类型 变量名;
    • 初始化:变量名 = 值;
    • 写成一行:类型 变量名 = 值;

常量:

// 格式
final 类型 常量名 =;
// 示例
final double PI = 3.14;

fianl关键字修饰的变量。只能赋值一次,就不能再改变了。

常量类(class constant):

存储常量,便于被其他类调用。

public class Constant{
    public static final PI = 3.14;
    psvm...
}

枚举类型:

使用关键字enum

enum Size {SMALL, MEDIUM, LARGE};
Size s = Size.MEDIUM;

4.运算符

自增、自减

int a = 1;
int b = 1;
int c = 2 * ++a;
int d = 2 * b++;

前缀形式:表示变量先自增或自减,再做运算

后缀形似:表示变量先使用原来的值做运算,再自增或自减

不建议写在表达式中

三元操作符

condition ? expression1 : expression2;

条件为真时返回第一个表达式,否则返回第二个表达式。

&&(与)、||(或)

多个条件(操作数)并列时,采用“短路”方式,如果通过第一个操作数就能判断,那后面的就不会执行了

位运算符

&(and), |(or), ^(xor), ~(not), >>(左移), <<(右移)

5.字符串

字符串使用预设类String来声明,是不可变的,所有的字符串会存储到虚拟机的一个共享池中,编译器使这些字符串共享。

字符串比较

使用.equals()方法,不能使用====比较的是两个字符串的存储地址。相同字符串的副本完全可能存在不同位置。

空字符串""和 null

""长度为0

null 内容为空

if (str != null && str.length()!=0){
    ...
}//必须先判断是否为null,否则可能`null.length()`,这样会报错

String、StringBuilder、StringBuffer

。。。

6.输入、输出

输入:构建与标准输入流System.in关联的Scanner对象

Scanner in = new Scanner(System.in);
String name = in.nextLine();//读取一行
int age = in.nextInt();//读取一个整数
String firstName = in.next();//读取一个单词(空格为分隔符)
//读取密码
Console cons = System.console();
String usr = cons.readLine("user name:");
char[] psw = cons.readPassword("password:");//安全起见,用完后覆盖这个字符数组

输出:

一些格式化输出

7.控制流程

  • 分支

    • if (con){}
      else{}
      
    • if(){}
      else if(){}
      else{}
      
    • switch(var){
          case con1:
              ...
              break;
          case con2:
              ...
              break;
          default:
               ...
              break;
      }//con1的类型可以是char,byte,short,int,enum常量,String(java 7开始支持)
      
  • 循环

    • for(int i,i<100,i++){}
      
      for(var:collection)statement //foreach 遍历集合元素,不用管下标
      
    • while(con){}
      
    • do{}while(con)
      
  • 顺序执行

    • statement1;
      statement2;
      ...
      

8.break continue

break;//在循环中,跳出循环

break_data:
while(con){
    ...
    for(con1){
        if(con2){
        	break break_data;//带标签变量,可以直接跳到标签处。
            //这里直接跳出多层循环
    	}
    }
}
continue;//在循环中,跳过当前要执行的,进入下一次循环

这不是必备的

9.BigDecimal BigInteger

BigDecimal:任意精度的浮点运算

BigInteger:任意精度的整数运算

运算时,不能直接使用算术运算符,需要调用add()mutiply()等大数类的方法

10.数组

创建一维数组:

int[] a = new int[100]; //声明并初始化一个长度为100长的整型数组
int a[] = new int[100]; //等价于上一句,变量名都是a

int[] s = {2,3,4,5,}; //会自动统计数组个数并填入值

new int[] {1,2,3,};//声明一个匿名数组

int[] r = new int[] {1,2,3,};

//长度为0的数组,不等于null
new elementType[0];
new elementType[] {};

数组一旦创建,长度不可再变。

如果需要扩展,可以使用数组列表(arrary list)

创建二维数组:

double[][] b = new double[NYear][NMonth];

二维数组本质上是一维数组里再放了一维数组,即数组的数组。

因此,控制NMonth在不同行的值,就可以构建一个不规则的二维数组,如

//构建一个下三角函数
//先分配行,再分配每行的元素个数
int[][] odds = new int[MAX+1][];
for(int n = 0; n<=MAX;n++){
    odds[n] = new int[n+1];
}

11.命令行参数

public static void main(String[] args){
    for(arg:args){
        System.out.println(arg)
    }
}

args从命令行中接收参数

java demo -g hello world

则:

args[0]:"-g"
args[1]:"hello"
args[2]:"world"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值