一.根据自己在PTA上的做题情况和学习通上老师的博客总结的PTA做题注意点:
1.如果喜欢做PTA之前先在编译器里面打好再复制进PTA时要注意:
提交的代码中一定不要包含package关键字
提交的所有程序都应该以如下形式出现
public class Main{
public static void main(String[] args){
//其他代码
}
}
Java中使用Scanner处理输入你需要注意程序开头必须import java.util.Scanner
导入Scanner类。(IDEA中会自动补充但PTA不会要多多注意)
2.如果题目要求里有出现“有若干行输入”时可以用while(hasNextInt())语句来实现。根据需要也可将sc.hasNextInt()改成sc.hasNext()
,可用来判断是否还有下一个输入标记(不管是不是int)。使用sc.next()
获取下一个输入标记(String型)。
3.打印输出语句的区别
System.out.println()//打印前会自动换行
System.out.print()//打印不会自动换行
System.out.printf()//格式化输出
%d
,按十进制整数格式输出。%.3f
,输出浮点数保留3位小数。%-5s
,按字符串格式输出,输出宽度为5。如果超过5个字符,则鸳鸯输出。如果为不足5个字符,右方填充空格。%5s
,左方填充空格。%b
,按boolean型格式输出。%%
,输出%。%n
,输出行分隔符,如回车换行。
4.输入时要注意的点
用户输入字符串时用next()和nextLine()读取都可以,但是next()是以空格和回车为分隔符,nextLine()是以回车为分隔符。所以在读取输入时最好用nextLine()读取一整行的内容(因为一行的内容一般都是一个定义的东西,如果用next()可能会在某行有多个空格的时候卡住),再按情况和自己需求用split(" ")把某行的字符串内容以空格分割。
二.java学习知识点小结(通过观看bilibili的黑马程序员网课学习)
1.对于变量:不能重复定义同一个变量。一般是字母,数字,下划线,美元符$组成,不能用特殊符号& %,不能是关键字,不能数字开头。关键字,是Java自己占用的词汇,有特殊用途;不用记,关键字不能作为变量名,类名。如果变量是类名,建议全部英文,首字母大写;如果变量是变量名:建议全部英文,首字母小写。
2.Java适合做什么:什么都可以做,但是最擅长做企业级web开发(网站开发)。
Java的跨平台原理:Java为每个平台都提供了对应的JVM虚拟机,Java程序在虚拟机中跑。
什么是Path环境变量: 其实是系统的一个菜单位置,用来配置程序的路径的,以便可以在命令行窗口的任意目录下直接启动该程序。
所以建议自己配置JDK的环境,可在命令行界面直接使用javac编译文件。
一个是JAVA_HOME
JAVA_HOME D:\develop\java\jdk-17(根据自己的jdk的位置设置)
一个是Path
Path %JAVA_HOME%\bin
3.Java的数据类型分为:基本数据类型和引用数据类型。
自动类型转换(小可以换大):byte,short,char->int->long->float->double
(如果要大换小)强制类型转换:如double a = 3.14;int b=(int)a;//b=3(所以在强制类型转换后可能会导致数值不准确)。
4.在Java中如果你想减少打System.out.print()的次数,你可以像(“变量a的值为”+a)这样用一个“+”来起到连接打印内容的作用。
5.运算符:逻辑运算符&(和),|(或),!(取反),^(判断异同,同为false,异为true)。
但是我们在之前学习C的时候就接触过&&,||(短路逻辑运算符),这个和&,| 的区别是a&b要把a,b均判断完真假后才能得出true or false;但是a&&b,如果a为false,就不会继续判断b的真假,因为此时已经可以得出结论a&&b为false,这样就优化了代码运行所需要的时间。(这点之前学C的时候并不知道,所以特地记一下防止忘记,其他和C大差不差)
三元运算符(平时练的时候用的少,特地记一下防止忘记):
格式:条件表达式? 值1 : 值2;如果条件表达式为真,这个式子等于值1,为假则为值2。
6.如果想要得到用户输入的数据——需要用Scanner
先导包:import java.util.Scanner;
再创建一个扫描器:Scanner sc = new Scanner(System.in);(sc是自己定义的,你可以换成任何你喜欢的名如input这样可读性更强一点)
最后调用扫描器的功能去等待用户输入数据//根据用户输入的数据类型决定用什么
int age = sc.nextInt();//int 用nextInt(Int的i是大写)
String name = sc.next();//字符或字符串用next
double money = sc.nextDouble();//小数用nextDouble
7.Random随机数
作用:Java提供的程序,用于产生随机数。
使用步骤:
1、导包:java.util.Random 工具实现,我们可以不管
2、创建一个Random这样一个东西:Random r = new Random();
3、调用他的功能得到一个随机数: int data = r.nextInt(10); // 0 ~ 9
注意1:Java提供的Random目前只能生产0~n-1之间的数据。
注意2:如果要生成指定区间的随机数,如生成17~28之间的数,可以看作(17+0~11)。
(循环和C很相似,就不写了)
8.Java中的数组
静态初始化(知道数组里面的值):数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,... };
动态初始化(只知道数组的长度(元素个数)):数据类型[] 数组名 = new 数据类型[长度];
(如果连要输入的元素个数也未知)则用Array数组:
//导包
import java.util.ArrayList;
import java.util.List;
List<String> strList = new ArrayList<String>();//Java 7中可以List<String> strList = new ArrayList<>();
while(sc.hasNextLine()){
strList.add(sc.nextLine());
}
//遍历输出列表中的内容
for (int i = 0; i < strList.size(); i++) {
String str = strList.get(i);
System.out.println(str);
}
//或者
for(String e: strList){
System.out.println(e);
}
9.方法(其实就是C里面的函数):不过不像C一样必须把函数放在main函数上面。
方法的重载:你可以定义一个方法(jiafa)因为传入的参数的数据类型的限制,你的这个方法可能只能实现一种数据类型之间的相加,如(int a,int b)就只能两个整数之间相加,但是如果想让这个方法的适用范围更广一些,你可以继续用一个方法名但是其中的参数数据类型不同,如(double a,double b)就可以实现小数之间的加法。你甚至也可以用(int a,int b,int c)来实现三个整数之间的相加,而这些都是在一个方法名(jiafa)下实现的。程序会自动根据你输入的参数数据类型个数来选择用哪种"jiafa"。非常的方便。
10.字符串———对字符串进行操作的方法(做PTA时感觉用的比较多的,因为做题量不是很多暂时只有这些)
split("要分隔的内容")//把字符串分割(如果有多个以空格为分隔的字符串,就可以先用nextLine得到整条字符串,再用这个办法进行分割就可以存放在字符串数组中,方便查找)
toCharArray//把字符串变成字符数组
toUpperCase//转大写
append(“要添加的内容”)//把指定内容加入字符串(StringBuilder)
toString(各种类型)//万物转字符串
subString(begin,end)//截取字符串从begin到end(包括begin,但不包括end)之间的字符串。
最后附上参考学习的博客链接PTA上提交Java程序的一些套路 - zhrb - 博客园 (cnblogs.com)