Java基本程序设计结构


lesson03

 

3.1 一个简单的Java程序

FirstSample.java

1 public class FirstSample {
2     public static void main(String[] args) {
3         System.out.println("We will not use 'Hello, World!'");
4     }
5 }

 

程序解析

  1. Java区分大小写

  2. 关键字public被称为访问修饰符(access modifier)控制访问级别

  3. 关键字class表示类,后面紧跟着类名,Java中的所有内容都在类中

  4. 源代码的文件名必须与公共类名字相同,并用.java作为扩展名

  5. jvm将从指定类中的main方法开始执行(Java语言规范,main方法必须声明为public)

  6. 每条语句必须用分号结束

  7. “.”点用于调用 Java的通用语法是:object.method(parameters)

 

3.2注释
  1. //最常用的,从//开始到一行结尾

  2. /* 和 */ 从 / *开始到 */结束(不能嵌套)

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

 1 /**
 2 *This is the first sample program in Core Java Chapter(章;阶段) 3
 3 *@version 1.01 2022-07-12
 4 *@author WenZheng
 5 */
 6 public class FirstSample {
 7     public static void main(String[] args) {
 8         System.out.println("We will not use 'Hello, World!'");//输出语句
 9         /*
10            可以用来注释一段语句
11         */
12     }
13 }

 

3.3数据类型

Java是一种强类型语言。就是每个变量声明一种类型。Java中有8中基本类型(primitive type),4种整形、2种浮点、1种用于表示Unicode编码的字符单元的字符类型char、1种boolean类型。

!!浮点数值有舍入误差。例如(2.0-1.1)将打印0.8999999999999999,而不是0.9,是因为二进制无法精确的表示1/10,就像十进制无法精确的表示1/3一样,如果不想有舍入误差就需要用BigDecimal类。

 

3.4变量

在Java中变量的声明尽量靠近变量的第一次使用的地方。

常量(final)final关键字表示这个变量只能被赋值一次(习惯上常量都用大写)

类常量/变量:在main方法外声明;用public static关键字

 

3.5运算符

数值之间的转换会丢失精度,int–>float/long–>float/long–>double

类型不同进行运算会操作数转换成同一种类型进行运算,有double>float>long>int

强制类型转换:double a = 2.13; int b = (int) a; 会丢失一部分精度。

Math.round()返回的是long类型

枚举类型

enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};

 

3.6字符串

“Hello”.substring(0, 3); 取字符串的子串。

Java中String类的对象成为不可变字符串,只可以让字符串变量引用另一个地址,而不能修改字符串中的字符。好处是可以共享字符串

1 "hello".equals("hello");  //比较字符串是否相等返回boolean
2 "hello".equalsIgnore("Hello");//比较字符串,忽略字母大小写
3 "hello".compareTo("hello"); //比较字符串是否相等返回int

构建字符串

1 StringBuilder builder = new StringBuilder();
2 builder.append("ha");//需要添加一部内容就append
3 builder.append("ve");
4 builder.append('.');
5 builder.append(1);
6 ​
7 //在需要构建字符串的时候就调用toString方法,将得到一个String对象,其中包含了构建其中的字符序列
8 String a = builder.toString(); 

 

3.7输入输出

输入需要构造一个Scanner对象

Scanner scanner = new Scanner(System.in);//创建Scanner对象
scanner.next();//从键盘输入以空格结束
scanner.nextLine();//以回车结束

 

读取密码使用

Console console = System.console();
String username = console.readLine("User name:");
char[] passwd = console.readPassword("PassWord:");

 

在idea中会读取cosole为null,需要在命令行中执行,并且需要在根目录下执行。

Java基本程序设计结构

 

 

 

格式化输出

System.out.printf("%1$s %2$tB %2$te, %2$tY", "Date:", new Date());
//格式化字符串的索引必须跟在%后面以$结束,t是日期开头
System.out.printf("%s %tB %<te, %<tY", "Date:", new Date());
//<表示与前面格式说明中的参数将被在其使用

 

Java基本程序设计结构

 

  

文件的输入与输出

 1 //想要对文件进行读取就需要有个用File对象构造一个Scanner对象
 2 Scanner in = new Scanner(Paths.get("myFile.txt"), "UTF-8");//Paths.get得到路径
 3 //也可以这样
 4 File file = new File("myFile.txt");
 5 Scanner inputF = new Scanner(file);
 6 ​
 7 Scanner scanner = new Scanner("myFile.txt");//Scanner会把路径当成字符串处理
 8 ​
 9 String dir = System.getProperty("user.dir");//得到启动路径
10 //写入文件,如果该文件不存在,创建该文件。可以像输出到sytem.out一样使用print/println/printf
11 PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");

 

3.8控制流程(跳过)

 

3.9大数值

如果基本类型不能满足需求,可以使用java.math包中的BigInteger和BigDecimal

BigInteger类实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点数运算。

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

BigInteger a = BigInteger.valueOf(10000);

大数值不能用运算符处理,需要用类中的方法:

BigInteger c = a.add(b); //c = a + b
BigInteger d = c.multiply(b); // d = c * b

 

3.10数组

求数组元素个数

int[] array = {1,2,3,4,5,6,7,8,9,0,1,2};
System.out.println(array.length);

for each循环(增强的faor循环)

int[] array = {1,2,3,4,5,6,7,8,9,0,1,2};
for (int s: array) {      //遍历数组不需要在意下标
    System.out.print(s);
}

数组排序:

Arrays.sort(red);  //sort方法可以对数组排序

二维数组:

 1 int[][] doubleArray1 = {{1,2,3},{2,3,4},{3,4,5}};
 2 ​
 3 for (int[] s : doubleArray1) {
 4     for (int b : s) {
 5         System.out.print(b);
 6     }
 7     System.out.print(" ");
 8 }
 9 //deepToString打印二维数组
10 System.out.println(Arrays.deepToString(doubleArray1)); 

 

Java其实没有多维数组,只有一维数组,多维数组被称为数组的数组,它们的存储方式是这样的:

Java基本程序设计结构

 

 所以可以创建不规整数组

 

##重点(值传递,引用传递)

int[] array = new int[12];
int[] next = array;  //传递的是一个引用,现在next和array指向的是同一个内存
next[3] = 13;  //现在array[3] 也等于 13;

如果想要将一个数组的所有只拷贝到一个新的数组中去就需要使用Arrays类的copyOf方法:

int[] newArray = Arrays.copyOf(array, array.length);

 

 

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/274097.html

(0)
上一篇 2022年7月13日
下一篇 2022年7月13日

相关推荐

发表回复

登录后才能评论