1.Java的基本程序设计

Java的基本程序设计结构

此列表写了一些Java特性

  1. System.out还有个print方法,它不在输出后增加换行符。而System.out.println就是默认给字符串增加换行符

  2. Java中,所有数值类型所占据的字节数与平台无关Java没有任何无符号整型(unsigned)

  3. Java中,整数表达式不能转化为布尔值

  4. Java中不区分变量的声明和定义,在C和**C++**中需要区分:

    int i = 10;//这是定义

    extern int i;//这是声明

  5. 不能使用==来判断字符串内容的相等性

  6. Java中若想要获得真正的字符数应该使用str.codePointCount(0,str.length());

  7. 将输出打印到“标准输出流”只需要调用System.out.println即可,若想从控制台获取输入,需要构造一个Scanner对象

  8. Java沿用了C语言函数库的printf方法

  9. Java没有goto语句

  10. Java没有沿袭const定义常量,必须使用final定义常量

  11. Java没有运算符重载

  12. Java不使用逗号运算符(for语句中的除外)。

  13. 注意Arrays类中的binarySearch方法必须使数组已经有序

    ##注释

    1. 行注释//,在Windows中,IDEA可以使用快捷键 Ctrl+/ 来进行单行注释

    2. 段落注释/*(自动补全剩余的)

    3. 类注释和方法注释

      类注释:

      方法注释:/**加回车

      /**
       *该方法传递两个int类型参数,用来求和
       *@param number_a 第一个加数
       *@param number_b 第二个加数
       *@return  返回一个求和的结果
       */
      public static int sum(int number_a, int number_b)
      {
          return number_a + number_b;
      }
      

      ##数据类型

      整型

      类型存储需求取值范围
      int4字节-2147483648~2147483647
      short2字节-32768~32767
      long8字节-9223372036854775808~9223372036854775807
      byte1字节-128~127

      浮点型

      类型存储需求取值范围
      float4字节大约 ± 3.40282347 E + 38 F \pm3.40282347\rm{E}+38\rm{F} ±3.40282347E+38F
      double8字节大约 ± 1.79769313486231570 E + 308 \pm1.79769313486231570\rm{E}+308 ±1.79769313486231570E+308

      三个特殊的浮点数值

      • 正无穷大
      • 负无穷大
      • NaN

      char类型

      有些Unicode字符需要两个char值

      boolean类型

      boolean型有两个值:false和true,用来判断逻辑条件。

变量与常量

  1. 变量的命名:要区分大小写

    命名的艺术:用英文

    ​ 驼峰命名法,若命名类,则用UpperCamelCase;若命名变量则用lowerCamelCase;

  2. Java中,变量的声明尽量靠近变量第一次声明的地方

  3. 使用关键字final来指示常量,常量的命名全用大写字母

运算符

与C语言相同,有算术运算符+,-,*,/,%等

数值类型之间的转换

byte->short->int->long

char->int->double这些可以无精度损失的自动转换:double integerNumber = 9;//这里的9自动转换为9.0

int->float; long->float; long->double会损失一些精度

强制类型转换

使用括号来完成

String

Java中字符串就是Unicode字符序列。字符串是不可变的,不能修改字符串字面量中的单个字符;但是可以通过修改字符串变量使它引用另一个字符串变量。

字符串储存在字符串常量池中,它是用来保存字符串对象引用的容器(字符串创建在堆中)。

  1. String substring(int beginIndex, int endIndex):可以从较大的字符串中提取一个子串

    /**
    *@param2:不想复制的第一个位置
    */
    String greeting = "Hello";
    String s = greeting.subject(0,3);//复制位置为0,1,2
    
  2. 拼接:Java中使用加号来连接两个字符串

    String expletive = "Expeltive";
    String PG13 = "deleted";
    String message = expletive + PG13;
    

    当将一个字符串值和一个非字符串值相连接时,后者会转化为字符串。这种特性用于输出语句中

    System.out.println("The answer is" + answer);
    
  3. boolean equals(String str):判断两个字符串是否相等

    String subString = "Hello!";
    String parentString = "Hello World!";
    subString.equals(parentString);//区分大小写
    subString.equalsIgnoreCase("hello");//不区分大小写
    
  4. int length():返回的是字符串UTF-16编码表示下的代码单元数量

    String str = "Hello";
    if (str.length() == 0);//判断str是否为空串
    String hello = "hi𝕆";//特殊字符'𝕆'含有两个代码单元        
    System.out.println(hello.length());//4
    System.out.println(hello.codePointCount(0, hello.length()));//3
    

    空串:长度为0的字符串

    null串:没有对象与该变量关联

  5. char charAt(int index):返回某一具体位置的字符,index的范围是从**0length()-1**;

    码点:就是某个任意字符在Unicode编码表中对应的代码值

    **代码单元:**是在计算机中用来表示码点的,大部分码点只需要一个代码单元表示,但是有一些是需要两个代码单元表示的。

    char firstCharacter = greeting.charAt(0);//firstCharacter is 'h'
    String sentence = "\u+1D546 is the best of octonions.";
    char isEmptyCharacter = sentence.charAt(1);//isEmptyCharacter为该特殊字符的第二个代码单元
    
  6. **int codePointCount(int beginIndex, int endIndex)**方法:返回指定节点范围的码点数,索引到beginIndexendIndex-1

  7. int compareTo(String other):按照字典顺序比较两个字符串

  8. boolean isEmpty()

  9. int indexOf(String str):返回给定的子串第一个匹配项在父串的位置

    String str = "Hello";
    String subStr = "el";
    System.out.println("str.indexOf(subStr) = " + str.indexOf(subStr));//值为1
    
  10. **String replace(CharSequence oldString, charSequence newString)**方法

将此字符串中与文字目标序列匹配的每个子字符串替换为指定的文字替换序列。替换从字符串的开始一直进行到末尾,例如,用字符串“aaa”中的“b”替换“aa”将得到“ba”而不是“ab”

  1. String toUpperCase():将字符串中的字符全转化为大写

  2. String toLowerCase():将字符串中的字符全转化为小写

    String Str = new String("www.google.com");
    System.out.println("返回值为:" +Str.toUpperCase());
    

##StringBuilder

如果用许多小的字符串来构建新的字符串使用StringBuilder类能够避免浪费空间(String每拼接一次字符串,都会新建一个新的对象),被称为字符串构建器

StringBuilder builder = new StringBuilder();
  1. StringBuilder append(String str):追加一个字符串并返回this

    StringBuilder newBuilder = new StringBuilder();//创建一个新的字符串构建器
    String newString = "Hello";
    newBuilder.append(newString);
    String completedString = newBuilder.toString();//获得了一个字符串
    System.out.println("completed String is" + completedString);
    
  2. StringBuilder append(char ch):追加一个字符并返回this

  3. String toString():获得一个和构建器内容相同的字符串对象

  4. void setCharAt(int i, char ch):将第i个代码单元设置成字符**ch**

  5. StringBuilder insert(int offset, char ch):在offset位置插入一个代码单元并返回this

输入和输出

读取输入

Scanner input = new Scanner(System.in);

现在使用Scanner类的各种方法来实现输入
Scanner类定义在java.util包中。需要使用import指令导入相应的包:import java.util.*

  1. String nextLine():读取一行输入(包含空格)

  2. int nextInt():读取一个整数

  3. double nextDouble():读取一个浮点值

    System.out.println("What is your name?");
    String name = input.nextLine();
    System.out.println("How old are you?");
    int age = in.nextInt();
    
格式化输出

System.out.printf("Hello, %s. Next year, your will be %d", name, age);

文件的输入与输出

Scanner input = new Scanner(Path.of("myfile.text"), StandardCharsets.UTF_8);

文件路径使用两个反斜杠符。

若想写入文件,就构造一个PrintWriter对象:PrintWirter output = new PrintWriter("myfile.txt",StandardCharset.UTF_8)

##控制流程

  1. 块作用域

    block用大括号括起来,决定了变量的作用域

  2. 条件语句

    if (condition) statement

    if (condition) statement1 else statement2

  3. 循环语句

    while (condition) statement

    do statement while (condition);

  4. for循环

  5. 多重选择:**switch**语句

    switch (choice)

    case A:

    break;

    case B:

    break;

    default:

    break;

    case标签可以是常量表达式(char,byte,shortint类型),枚举常量,字符串字面量

大数

java.math包中的两个类BigIntegerBigDecimal

可使用静态的valueOf方法可以将一个普通的数值转换为大数:

BigInteger bigNumber = BigInteger.valueOf(1)

  1. BigInteger add(BigInteger other):返回这个大数和另一个大数的和
  2. BigInteger sqrt():得到这个大数的平方根
  3. int compareTo(BigInteger other)

Arrays

声明

int[] array = {1,2,3,4};//初始化

int[] array = new int[100];//分配空间

以上声明方式都为静态数组

打印

  1. for-each语句

    for **(**variable : collection) statement

    int[] primeArray = {2,3,5,7,11,13};
    for (int element : primeArray);
         System.out.println("element = " + element);
    
  2. 调用Arrays类中的toString方法

    int[] primeArray = {2,3,5,7,11,13};
    System.out.println(Arrays.toString(primeArray));//输出的是[2,3,5,7,11,13]
    

方法介绍

  1. static datatype[] copeOf(datatype[] array, int end):返回一个新数组,第二个参数为新数组的长度
  2. static void sort(datatype[] array):快速排序,这里的array的元素类型应该实现Comparable接口,否则会强制类型转换成Comparable类型的
  3. int binarySearch(datatype[] array, datatype value):二分查找value,若存在返回下标,否则返回负值
  4. boolean equals(datatype[] array,datatype[] anotherArray):要求两个数组顺序一致,才能返回true
int[] copedPrimeArray = Arrays.copyOf(primeArray,primeArray.length);
Arrays.sort(primeArray);

###多维数组(与C语言差不多)

int[][] array = new int[3][5];

int final static ROW = array.length;
int final static COLUMN = array[0].length;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值