147
社区成员




数据类型:首先我们一共学习了八大类型:int,long,float,double,String,boolean,char,byte,其中int,String,boolean,double这些经常用到。我们重点学习了他们的内存大小,运用方式,还有整型和浮点数之间的转化,向上转型和向下转型。其实这些数据类型还有更重要的是包装类的使用,基本类型与包装类之间的装箱与拆箱,还有Integer与String之间的转换,这个经常用在简单的算法中。
表达式:java的表达式就是一些+,-,*,/,%这些算式表达式,还有&,|,!等。
顺序结构
顺序结构就是程序从上到下一行一行的执行代码,没有判断和中转。
选择结构
有选择性的执行或者跳过指定代码。
循环语句
循环就是在循环条件满足的情况下,反复执行特定代码。
数组是最基础的数据结构,数组的优点是查找速度快,因为数组的底层存储地址是按顺序的,所以我们会以索引的方式按顺序排序每个数据,这样我们需要直接按索引把数据取出就行。但是数组的增删慢。
数组可以储存数据,可以是基本类型也可以是我们自定义的类实例化的对象,对于整型的数据我们可以按大小进行排序,常用的排序有冒泡排序,插入排序,希尔排序,快速排序等。
数组的遍历,数组的遍历是通过循环来实现的,我们需要通过循环来达到每一个数据的位置。
Arrays类的使用,这个类里面有很多简化开发的方法我们可以进行使用。
类在java中是一个非常重要的概念,会使用类,会创造类,是学好java的关键,首先类可以是java提供给我们的,比如说Arrays类,Scanner类,String类,Date类,Math类,Stream类,Collection类等等,这些java提供的类我们会发现里面有给好的方法,我们可以直接使用,但是更重要的是你是否会设计一个工具类,实体类来完成一些需求呢?这些才是最重要的。
方法是一个功能代码块,我是这么认为的,java提供的方法能实现一些功能,比如集合类里面有排序的方法,当然,我们也可以设计出这样的方法给我们使用,比如这一有一张纸,你就要会利用java来提供一把剪刀,来让它变成一个好看的图形。
去掉重复的数据
import java.util.LinkedHashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] str = new String[n];
for (int i = 0;i<n;i++){
str[i] = String.valueOf(scanner.nextInt());
}
LinkedHashSet<String> strings = new LinkedHashSet<String>();
for (int i = 0;i<n;i++){
strings.add(str[i]);
}
int[] num = new int[strings.size()];
int i = 0;
for (String string : strings) {
num[i] = Integer.parseInt(string);
i++;
}
for (int j = 0;j<num.length;j++){
if (j==0){
System.out.print(num[j]);
}
else System.out.print(" "+num[j]);
}
}
}
总结:这里去除重复的数据其实是先把输入的数字转换成字符串,再运用泛型为String类型的LinkedHashSet把数据储存起来,这个集合是储存有序和不可重复的数据,运用的就是这个性质,这里我是运用了数组的遍历,把数组的数据储存到集合,不仅是对数组的灵活运用,还要考验对每个类型集合的熟悉程度。
import java.util.Scanner;
public class Main {
private int length;
private int width;
public Main(int length) {
this.length = length;
this.width = length;
if (length<=0){
this.length = 0;
this.width = 0;
}
}
public Main(int length, int width) {
this.length = length;
this.width = width;
if (length<=0||width<=0){
this.length = 0;
this.width = 0;
}
}
public int getPerimeter(){
int perimeter = width*2+length*2;
return perimeter;
}
public int getArea(){
int area = width*length;
return area;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
String str = scanner.nextLine();
String[] strs = str.split(" ");
int[] nums = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
nums[i] = Integer.parseInt(strs[i]);
}
if (nums.length == 1) {
Main rect1 = new Main(nums[0]);
System.out.print(rect1.length);
System.out.print(" " + rect1.width);
System.out.print(" " + rect1.getPerimeter());
System.out.println(" " + rect1.getArea());
} else if (nums.length == 2) {
Main rect2 = new Main(nums[0], nums[1]);
System.out.print(rect2.length);
System.out.print(" " + rect2.width);
System.out.print(" " + rect2.getPerimeter());
System.out.println(" " + rect2.getArea());
}
}
}
}
总结:这个类的设计其实是设计了一个长方形的实体类,设置长度和宽度的属性,设计一些方法来提供一些功能,创建实体类的学习很重要,对于一些数据库表对应的实体类我们也需要进行设计。
我认为我的学习方法很好,不需要过多改进,我觉得我对于日常老师布置的功课的认真程度不高,但是我对于追求新知识和新技术的上进心很高,在此我需要对此进行平衡。对于pta的题目我会经常会虽然结果正确但是评测错误,这可能是因为和标准最优的答案有着差别,毕竟代码要求更简短的同时也要能够完美运行,这点我存在不足。
我一般会查CSDN,看一些人写的文章,实在搞不懂我会问一些团队的师兄。
我认为我对于一些基础知识可能还把握不好,对于一些java的基本原理我还需要进一步学习。
知道,我觉得他的优点是可以找到一些不会知识点的学习资料和问题的解决办法,不足就是可能会对初学者造成依赖,导致一些人遇到问题就查csdn。
资源丰富,任何知识点都可以查到,一些相关的技术,比如数据层的一些数据库相关的技术,我可以直接看文本进行学习,一些业务层框架的学习也是如此,里面一些大佬发的优质文章,学习一些技术可以不通过视频直接学会。
我觉得是里面是鱼龙混杂,有优质资源的同时也有劣质资源,我们需要区分。
我了解过github,这里面有着全球的优质资源,有些技术资源我们可以直接下载。
阻力就是会被一些运行不了的问题限制了学习的进程,我想说的是不要放弃,之前我有一些困难都是不断的尝试,一两个星期就解决了。