Java 基础语法_蓝桥杯
1 主类名必须是Main
public class Main {
public static void main(String[] args) {
System.out.println("Helo world!");
}
}
2 输入输出
2.1 输入
2.1.1 使用Scanner
类的.nextXXX()
方法:
new一个Scanner类
Scanner in = new Scanner(System.in);//new一个Scanner类
2.1.2 实数输入
int a = in.nextInt();// 整数输入
long b = in.nextLong();// 长整数输入
short c = in.nextShort();// 短整数输入
double e = in.nextDouble();// 双精度浮点输入
float f = in.nextFloat();// 单精度浮点输入
2.1.3 字符串输入
String f = in.next();//输入一个字符串
char g = in.next().charAt(0);//输入一个字符串 选择第一个赋值给g,从而实现char的输入
String s[] = in.nextLine().split(" "); // 使用split通过空格分割读入的一行字符串,存在s中
while (in.hasNext()) {
String s2[] = in.nextLine().split(" ");
for(String i : s2) {
System.out.println(i);
}
}
2.1.4 next()
和nextLine()
的区别
String s1 = in.next();//输入一个字符串 遇到空格结束相当于 cin 和 scanf
String s2 = in.nextLine();//输入一行字符串,可接收空格相当于cin.getline() 和 gets()
2.1.5 hasNext()
方法
hasNext()
方法可以作为多组输入,hasNext()
的返回值是boolean
值,作用是当在缓冲区内扫描到字符时,会返回true
, 否则会发生阻塞,等待数据输入。
所以hasNext()
是不会返回false
的
所以遇到多组输入时,可以使用 while(in.hasNext()){}
相当于 while(~scanf()){}
while(in.hasNext()) {
int A = in.nextInt();
int B = in.nextInt();
System.out.printf("%d\n",A+B);
}
int A,B;
while(~scanf("%d%d",&A,&B)){
printf("%d\n",A+B);
}
!!!注意和nextXXX()
方法类似,hasNextXXX()
也有针对不同类型变量的方法:
hasNext() // 判断缓存区中还有没有数据,有返回true, 否则等待输入。
hasNextInt() // 判断输入的是不是int型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
hasNextDouble() // 判断输入的是不是double型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
...
2.2 输出
Java
中往控制台输出的几种常用函数:
2.2.1 printf()
方法
System.out.printf();
和printf
一样。 可使用格式控制符进行格式化输出。
int A = in.nextInt();
int B = in.nextInt();
System.out.printf("%d\n", A + B);
2.2.2 print()
方法
System.out.print();
不能使用格式控制符进行格式化输出,仅输出变量。
int A = in.nextInt();
int B = in.nextInt();
System.out.print(A + B);
2.2.3 println()
方法
System.out.println();
不能使用格式控制符进行格式化输出,仅输出变量,但会自动输出一个换行。
int A = in.nextInt();
int B = in.nextInt();
System.out.print(A + B);
3 编程规范和常用数据类型
3.1 简介
Java
是纯面向对象语言,所有的程序都要定义在类中,类中只能包含成员变量,成员函数,以及代码块。- 不能在类体内直接出现其他执行性语句。
Java
程序从和C/C++
一样都从main
函数开始执行。Java
中一个Java
文件中只能至多包含一个public class
并且当有public clas
类时 main函数只能定义在该类中。xxx.java
文件的文件名必须必须与main
函数所在类的类名相同 。
3.1.1 Java
中main
函数的定义
public static void main(String[] args){....}
如:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// System.out.println("Helo world!");
Scanner in = new Scanner(System.in);// new一个Scanner类
while (in.hasNext()) {
String s2[] = in.nextLine().split(" ");
for (String i : s2) {
System.out.println(i);
}
}
}
}
3.2 Java
常见数据类型
int float double long char boolean byte
常见类型定义方式:
int a;
float b;
double c;
boolean f = true;
3.3 数组
3.3.1 定义
int a[] = new int[100];
或者
int a[];
a = new int[100];
3.3.2 初始化
int a[] = {1, 2, 3, 4};
或者
Arrays.fill(a,x); //将a内的每个元素赋值为x
int a[] = new int[10];
Arrays.fill(a, 1);
for(int x:a) {
System.out.println(x);
}
3.3.3 数组的拷贝
clone()
int a[] = new int[10]; int b[] = new int[10]; Arrays.fill(b, 1); a = b.clone(); // 将b数组的值拷贝给a数组 for(int x:a) { System.out.println(x); }
System.arraycopy
//System.arraycopy(Object a, int begin_a, Object b, int begin_b, int length); //从a复制到b,复制从a数组指定的位置begin_a开始,到begin_a+length-1结束。放置从b的begin_b开始,到begin_b+length-1结束。 int[] a = {1, 2, 3, 4}; int[] b = new int[10]; System.arraycopy(a, 0, b, 0, 3); for(int i = 0; i < 4; i++){ System.out.println(b[i]); } /* 输出: 1 2 3 0 */
Arrays.copyOf
//Arrays.copyOf(int[] a, int length); //从a数组的第一个元素开始复制,复制length个元素。 int[] a = {1, 2, 3, 4}; int[] b = new int[10]; b = Arrays.copyOf(a, 4); System.arraycopy(a, 0, b, 0, 3); for(int i = 0; i < 4; i++){ System.out.println(b[i]); } /* 输出: 1 2 3 4 */
Arrays.copyOfRange
//Arrays.copyOfRange(int[] a, int begin, int to); //从a数组begin开始复制,到to-1位置结束。 int[] a = {1, 2, 3, 4}; int[] b = new int[10]; b = Arrays.copyOfRange(a, 0, 4); for(int i = 0; i < 4; i++){ System.out.println(b[i]); } /* 输出: 1 2 3 4 */
3.4 String
3.4.1 String
的创建
1.
String
定义方式形如:String s1 = "qwq";
2.因为
String
是一个类, 所以也可以通过构造函数初始化, 形如String s2 = new String("orz");
- 注意, 通过第一种方式创建字符串对象,内存分配在“常量池” 中。在常量池中数据是共享的, 当存在
qwq
这个常量时,如果再String s2 = "orz";
时,此时JVM
不会创建新的字符串对象,而是会让s2
指向qwq
这个常量的地址,也就是说s1
和s2
的内存地址是相同的。- 对于第二种方式,每创建一个字符串对象,都会在堆区重新开辟一个空间保存字符串常量。
3.4.2 String
的比较
==, != :
== , != 判断的是两个字符串地址是否相等。
前面已经说过,两个直接用=赋值的字符串对象,如果字符串常量相同则地址相同。
所以:
String s1 = "qwq"; String s2 = "qwq"; s1 == s2 // true String s1 = new String("qwq"); String s2 = new String("qwq"); s1 == s2 // false
s1.equals(s2);
//equals()方法是直接比较两个字符串对象的内容,相等返回 true,否则返回false String s1 = new String("qwq"); String s2 = new String("qwq"); s1.equals(s2); //true
!!!所以判断字符串内容是否相同要用 equals 方法而不能直接用 == 。切记,!!!
3.4.3 String
对象的遍历
在java
中String
不可直接通过索引或者说下标遍历,而要先转化为字符数组或者使用charAt()
方法。
String s1 = "123456";
char[] s2 = s1.toCharArray();
for(int i = 0; i < s2.length; i++){ //注意这里的length没有括号!!!
System.out.println(s2[i]);
}
或者使用增强的for
遍历:
String s1 = "123456";
for (char ch : s1.toCharArray()) {
System.out.println(ch);
}
Java String
类还有很多方法,及其强大,由于篇幅这里就不多讲了,详细参考:别人的。
上一篇: 衡量网红营销活动的影响
下一篇: 狂神java基础语法部分总汇