java的ArrayList与print方法的问题

ArrayList arr = new ArrayList();
arr.add("aaa");
arr.add("bbb");
arr.add("ccc");
arr.add(10);
System.out.println(arr);
为什么结果是:[aaa, bbb, ccc, 10]
我猜测:因为print遇到ArrayList类型时会自动遍历该集合,并且调用集合的tostring方法进行打印。这里面前三个元素是String类型,调用toString()方法后打印出字符串的值,而对于int类型,调用toString方法打印出int的值。(但是都是object类型,object的toString方法不应该这样啊。)
所以到底是什么原因?

3个回答

arr重写了toString,它会输出每个元素的toString,以及逗号和方括号

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复青蛙如果: 不需要管,所有的对象都有toString
大约 3 年之前 回复
com_it
青鸟路过佳城 回复青蛙如果: 这是集合中toString()的代码 public String toString() { Iterator<E> it = iterator(); if (! it.hasNext()) return "[]"; StringBuilder sb = new StringBuilder(); sb.append('['); for (;;) { E e = it.next(); sb.append(e == this ? "(this Collection)" : e); if (! it.hasNext()) return sb.append(']').toString(); sb.append(',').append(' '); } }
大约 3 年之前 回复
u013115078
码厨frog 原来是这样啊,那么ArrayList里面的toString方法又是如何运作的呢?比如。怎么判断一个元素是String类型还是int类型,并将他们的值转换出来的?(小白求助,希望能详细解释一下,谢谢,谢谢!)
大约 3 年之前 回复

首先理解System.out.println(Object)就能很好的理解这种情况。
public void println(Object x)打印 Object,然后终止该行。
此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,
然后的行为如同先调用 print(String) 再调用 println() 一样。
参数:
x - 要打印的 Object。

---------------分割-----------------

String.valueOf(Obiect x)
public static String valueOf(Object obj)返回 Object 参数的字符串表示形式。
参数:
obj - 一个 Object。
返回:
如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值。
另请参见:
Object.toString()

ArrayList 里重写toString方法,所以从此回溯便可以表层的理解每一步的原理。

arraylist 重写了object的tostring 所以打印除arr每一个元素的tostring

里面的元素的tostring 是每一个元素各自定义的tostring 这就是java的多态
如果你再加入一个你自己定义的Person类但是没有定义tostring 那么这个Person对象的tostring 就会调用其父类object的tostring

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 关于将ArrayList存入文件与读取的问题

问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。 这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList<Task>)ois.readObject();这一行。 编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList<Task> 我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。 如果能,希望可以教我一下我写法的缺陷。 很抱歉浪费大家时间,感激不尽 import java.io.*; import java.text.*; import java.util.*; import java.lang.*; public class TimeTracker { public static void main(String[] args) throws IOException { byte[] option = new byte[100]; ArrayList<Task> TaskList = new ArrayList<Task>(); for(;;){ //nihao //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ObjectInputStream ois = null; try{ ois = new ObjectInputStream(new FileInputStream("timetracker.data")); TaskList = (ArrayList<Task>)ois.readObject(); } catch (ClassNotFoundException e){ System.out.println("(None)"); } catch (EOFException e){ // catch EOF System.out.println("have reached the end of file"); } finally{ if( ois != null ) { ois.close(); } int n = TaskList.size(); System.out.println(n); } //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ManuPrint manu = new ManuPrint(); manu.Print(); int numRead = System.in.read(option); if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){ if((char) option[0] == '1'){ System.out.println("Enter new task (blank line ends input, no text ends the current task):"); Date date = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dt = new SimpleDateFormat("HH:mm"); //------------------------------record the last finished task //------------------------------record the last finished task // still not sloved multi lines BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str=br.readLine(); // multi lines Task a = new Task((ft.format(date)),(dt.format(date)),"","",str); TaskList.add(a); } // option 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// if((char) option[0] == '5'){ FileOutputStream fout = new FileOutputStream("timetracker.data"); ObjectOutputStream out = new ObjectOutputStream(fout); try{ out.writeObject(TaskList); out.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ out.close(); } catch(Exception e){ e.printStackTrace(); } } System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********"); System.exit(0); } // option 5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// } // if=1,2,3,4,5 else{ System.out.println("Invalid option!"); continue; } } //nihao } // main } //class

java ArrayList 的size值在多线程中可见性问题

# ArrayList hello! 想问下大家一个可见性的问题,如果使用ArrayList,开启两个线程,一个线程往这个集合中添加数据,另一个线程中取这个集合的size值,为什么线程中取到的值一直取不到最新的值? ```java public void testVisibility3() { List<Object> list = new ArrayList<>(); System.out.println("current list size:" + list.size()); new Thread(() -> { System.out.println("thread 1 add ...."); for (int i = 0; i < 10; i++) { list.add("index" + i); System.out.println("thread 1 add success size:" + list.size()); try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("thread 1 add success"); }).start(); new Thread(() -> { System.out.println("thread 2 start ======="); while (list.size() < 5) { // 这里不能使用System.out.println方法来进行测试,因为该方法是线程安全的,有同步标识,这样会导致list数据重新从主内存中加载一份 // System.out.print("thread 2 read size:" + this.list.size() + "\n"); } System.out.println(); System.out.println("thread 2 end ======="); }).start(); } ``` 如果用main方法启动调用上面的方法,第二个线程一直不能结束,取不到最新的size值; # 但如果定义一个对象,对象中有int值 ```java public class Person implements Serializable { /** 年齡 */ private int age; /** * 空构造函数 */ public Person() { // } public void incrAge() { this.age++; } /** * Getter method for property <tt>age</tt>. * * @return property value of age */ public int getAge() { return this.age; } /** * Setter method for property <tt>age</tt>. * * @param age * value to be assigned to property age */ public void setAge(int age) { this.age = age; } } ``` 但是,我如果使用上面的对象,我对象中有个int值,如果我开启两个线程,一个线程对这个对象的int值赋值,另一个线程从这个对象中取这个int值,int值没有加其它的修饰符,只有个private; 但是取值的这个线程值不然等很久,就能获取到另一个线程赋的值 ```java public void testVisibility4() { Person person = new Person(); new Thread(() -> { System.out.println("thread 1 start ======= age =" + person.getAge()); while (person.getAge() != 12) { } System.out.println("thred 1 age =======" + person.getAge()); System.out.println("thread 1 end ======="); }).start(); new Thread(() -> { System.out.println("thread 2 modify ...."); for (int i = 0; i < 12; i++) { person.incrAge(); } System.out.println("thread 2 modify success"); }).start(); } ``` 上面方法运行的结果,一般都会是: ```java thread 1 start ======= age =0 thread 2 modify .... thread 2 modify success thred 1 age =======12 thread 1 end ======= ``` 请问下,这个ArrayList在多线程中这个size和一个对象的int值在多线程中它们到底是如何处理的?可见性为什么会不一样了?

简单java ArrayList add 问题

请各位大神看看下面的代码, <br />我想把生成的120个数组放到list当中 <br />但是,后放入的替换了全面的所有数据 <br />不明所以,望说明,谢谢。 <br /><pre name="code" class="java"> package com.zhangxuan.platform.test; import java.util.ArrayList; import java.util.List; public class T { private static List&lt;int[]&gt; list = new ArrayList&lt;int[]&gt;(); public static void main(String[] args) { // 测试数据 int[] a = {0, 1, 2, 3, 4}; int[] b = new int[a.length]; sort(a, b, a.length, 0); for(int[] i : list) { for(int it : i) { System.out.print(it + " "); } System.out.println(); } } public static void sort(int[] a, int[] b, int n, int c) { if(c == n) { /* for(int i : b) { System.out.print(i + " "); } System.out.println(); */ // 把b放到list当中,但是这里就把list的所有数据替换成b了. // 所以list全部是4 3 2 1 0 了 list.add(b); return; } else { for(int i = 0; i &lt; n; i ++) { boolean f = false; for(int j = 0; j &lt; c; j ++) { if(a[i] == b[j]) { f = true; break; } } if(!f) { b[c] = a[i]; sort(a, b, n, c + 1); } } } } } </pre>

java,ArrayList,怎么在一个数组里存储多个值?

怎么在一个数组里存储多个值? 比如, string a = "xiaoming"; int age = 28; string aihao = "唱歌、跳舞。"; 把上面的值存到一个数组里 ArrayList arr = new ArrayList(); arr.add(0,咋存到这里) ArrayList arry = new ArrayList(); arry.add(0, "小明,28,1984,null"); out.print(arry.get(0).toString().split(",")[0]); 类似这种的,还有没有更好的官方用法?谢谢

Java代码ArrayList删除其中值的问题,请看下面的代码有问题么?

//删除集合中的偶数数据 List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); } 以上的代码是否有问题?是不是出了越界的异常?应该改成这样么? List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); i--; //加上这一句是否就没问题了? } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); }

为什么ArrayList用set之后,运行出来是这样的?(麻烦大神帮忙解释一下,刚接触编程不太懂)

import java.util.ArrayList; public class AP01 { public static void main(String[] args) { ArrayList<String> students = new ArrayList<String>(); students.add("Alex"); students.add("Bob"); students.add("Carl"); for(int k = 0; k< students.size(); k++) { System.out.print(students.set(k, "Alex") + " "); } System.out.println(); for(String str : students) { System.out.print(str + " "); } } } Console Alex Bob Carl Alex Alex Alex

重写 compareTo后,ArrayList.sort可以升序排列,为什么一般不改成降序呢 ?

package interfaces; import java.util.*; //实例数组排序:员工数组排序 /** * This program demonstrates the use of the Comparable interface. * @version 1.30 2004-02-27 * @author Cay Horstmann */ public class EmployeeSortTest { public static void main(String[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Harry Hacker", 35000); staff[1] = new Employee("Carl Cracker", 75000); staff[2] = new Employee("Tony Tester", 38000); Arrays.sort(staff);//结合重写后的compareTo方法,将类按照工资高低升序排列 // print out information about all Employee objects for (Employee e : staff) System.out.println("name=" + e.getName() + ",salary=" + e.getSalary()); } } class Employee implements Comparable<Employee> { private String name; private double salary; public Employee(String n, double s) { name = n; salary = s; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } /** * Compares employees by salary * @param other another Employee object * @return a negative value if this employee has a lower salary than * otherObject, 0 if the salaries are the same, a positive value otherwise */ public int compareTo(Employee other) { if (salary < other.salary) return -1;//if (salary < other.salary) return -1; if (salary > other.salary) return 1;//if (salary > other.salary) return 1; return 0; //若上面两句改写成这样,那输出结果就会降序排列,也不会报错,为什么不这样写呢? } } 问题在注释中写了

arraylist的增添覆盖问题 new Student()已放到循环内 还是覆盖前边的输入怎么解决

import java.util.Scanner; import java.util.ArrayList; public class Student{ static String sNo,sSex,sName; static int sAge,sJava; //构造方法初始化成员变量 Student(String sNo,String sSex,String sName,int sAge,int sJava){ this.sNo=sNo; this.sSex=sSex; this.sName=sName; this.sAge=sAge; this.sJava=sJava; } //创建get方法 static String getNo(){ return sNo; } static String getName(){ return sName; } static String getSex(){ return sSex; } static int getAge(){ return sAge; } static int getJava(){ return sJava; } //构造一个输出方法 public String toPrint(){ return "学号:"+sNo+" "+"名字:"+sName+" "+"性别:"+sSex+" "+"年龄:"+sAge+" "+"java成绩:"+sJava; } public static void main(String[] args){ ArrayList<Student> list=new ArrayList<Student>();//构造arraylist方法 Scanner input=new Scanner(System.in); for(int i=0;i<2;i++){//循环输入学生信息 System.out.println("请输入学号:"); String no=input.next(); System.out.println("请输入名字:"); String name=input.next(); System.out.println("请输入性别:"); String sex=input.next(); System.out.println("请输入年龄:"); int age=input.nextInt(); System.out.println("请输入java成绩(整数):"); int java=input.nextInt(); Student a=new Student(no,sex,name,age,java);//将信息录入Student构造方法 list.add(a);//增添信息 } int resultsMax=0,resultsMin=list.get(0).getJava();//声明两个变量得到最大、最小成绩 int max=0,min=0;//声明两个变量,存最大小值所在的数组索引 for(int j=0;j<list.size();j++){//使用arraylist size方法判断动态数组长度 System.out.println(list.get(j).toPrint()); if(list.get(j).getJava()>resultsMax){//判断java最大数据 resultsMax=list.get(j).getJava(); max=j; } if(list.get(j).getJava()<resultsMin){//判断java最小数据 resultsMin=list.get(j).getJava(); min=j; } } System.out.println("java成绩最高的学生信息:"+list.get(max).toPrint()); System.out.println("java成绩最低的学生信息:"+list.get(min).toPrint()); } }

JAVA初学者练习题,求找错

``` package report5; import java.util.ArrayList; public class Student { int id; String name; ArrayList<Integer> quizResult =new ArrayList<Integer>(10) ; public Student() {} public Student( int id){ this.id=id; } public Student(int id, String name){ this.id=id; this.name=name; } public void setID(int id){ this.id=id; } public void setName(String name){ this.name=name; } void setAllResult(int a, int b, int c, int d, int e){ quizResult.add(a); quizResult.add(b); quizResult.add(c); quizResult.add(d); quizResult.add(e); } void setUpdate(int index, int value){ quizResult.set(index,value ); } int sum() { int sum=0; for(int i:quizResult) sum+=quizResult.get(i) ; return sum; } void print(){ System.out.printf("%d %s ",id,name); for(int i=0; i<quizResult.size() ;i++) System.out.printf("%d ",quizResult.get(i) ) ; System.out.printf("(Total %d,Average %d",sum(),sum()/5); } } ``` 测试class ``` package report5; public class test { static void method1() { Student aaa=new Student(); Student bbb=new Student(234567); Student ccc=new Student(345678,"hongg"); aaa.setID(123456); aaa.setName("chengwuql"); aaa.setAllResult(7, 9, 7, 9, 6); bbb.setName("kang"); bbb.setAllResult(7, 5, 1, 8, 8); ccc.setAllResult(8, 9, 8, 4, 8); aaa.print(); bbb.print(); ccc.print(); } public static void main(String[] args) { method1(); } } ``` 题目是 使用 给定的部分代码 然后完成。。。 求 aaa bbb ccc 三人五次的成绩 和平均成绩 考察 重载的构造函数 输出结果 ``` 123456 chengwuql 7 9 7 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 7 out-of-bounds for length 5 at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source) at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source) at java.base/java.util.Objects.checkIndex(Unknown Source) at java.base/java.util.ArrayList.get(Unknown Source) at report5.Student.sum(Student.java:47) at report5.Student.print(Student.java:54) at report5.test.method1(test.java:17) at report5.test.main(test.java:24) ``` 本人不太会用arraylist ,应该是这里出问题了,谢谢

关于JAVA泛型方法的小问题

import java.util.ArrayList; public class GenericStack<E> { ArrayList<E> list = new ArrayList<>(); public int getSize(){ return list.size(); } public E peek(){ return list.get(list.size() - 1); } public void push(E e){ list.add(e); } public E pop(){ E e = list.get(list.size() - 1); list.remove(getSize() - 1); return e; } public boolean isEmpty(){ return list.isEmpty(); } } 为什么像push方法不是一个泛型方法而void前面不要加上<E>呢?到底什么才 是泛型方法啊?

关于resultset读取和arraylist保存的问题

String sql ="select * from shop_something "; ResultSet re = db.query(sql); ResultSetMetaData md =re.getMetaData(); dish some= new dish(); ArrayList<dish> list= new ArrayList(); while(re.next()) { some.setId(re.getString("id")); some.setCatelog_id(re.getString("Catelog_id")); some.setDescribe(re.getString("describe")); some.setImge(re.getString("image")); some.setName(re.getString("name")); some.setPrice(re.getFloat("price")); some.setSupplier(re.getString("supplier")); list.add(some); } for(dish ds:list) { System.out.print(" "+ds.getId()+"hello"); } 有两个对象 对象里分别有id11 和id22 两个属性 以上代码 使用 for each 输出的结果 只有两个id22 这是为什么 另外有没有更好 的方法来访问数据库并封装到list表中? 使用反射的话可以详细讲解吗? 谢谢!

java数据库,出现java.lang.ClassNotFoundException 问题

package S; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; public class JDBCS { String url = "jdbc:mysql://localhost:3307/ty10"; String name = "root"; String password = "mysql"; Connection conn = null; PreparedStatement pps=null; ResultSet rs = null; JDBCS() { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,name,password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } void update(String sql,String[] val){ try { pps = conn.prepareStatement(sql); for (int i = 0; val!=null && i < val.length; i++) { pps.setString(i+1, val[i]); } pps.executeUpdate(); }catch (SQLException e) { e.printStackTrace(); } } ArrayList<HashMap<String ,String>> queryToList(String sql ,String[] val){ rs=query(sql,val); ArrayList<HashMap<String ,String>> list = new ArrayList<HashMap<String,String>>(); try { ResultSetMetaData mt = rs.getMetaData();//结果集结构对象(有啥字段,类型,长度。。。) while(rs.next()){ HashMap<String ,String> map = new HashMap<String ,String>(); for (int i = 0; i < mt.getColumnCount(); i++) {//取所有字段 String name = mt.getColumnName( i+1 );//获取列名 map.put(name, rs.getString(name)); } list.add(map); } } catch (SQLException e) { e.printStackTrace(); } return list ; } ResultSet query(String sql ,String[] val){ try { pps = conn.prepareStatement(sql); for (int i = 0; val!=null && i < val.length; i++) { pps.setString(i+1, val[i]); } rs = pps.executeQuery(); return rs ; }catch (SQLException e) { e.printStackTrace(); } return null; } void close(){ try { rs.close(); } catch (SQLException e2) { e2.printStackTrace(); } try { pps.close(); } catch (SQLException e1) { e1.printStackTrace(); } try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } 运行后错误提示 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at S.JDBCS.<init>(JDBCS.java:22) at S.student2.main(student2.java:9) Exception in thread "main" java.lang.NullPointerException at S.JDBCS.query(JDBCS.java:81) at S.student2.main(student2.java:10)

求助,jsp里面java的类型转换问题

从dao里面返回的ArrayList转换成自定义的vo时报错,不知道怎么办了(我java没怎么学) 或者可不可以dao直接返回自定义vo login.jsp ``` <%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%> <%@ page import="vo.Admin,dao.AdminDao" %> <html> <body> <form action = "login.jsp"> 账号:<input type = "text" name = "adminname"><br> 密码:<input type = "password" name = "password"><br> <input type = "submit" value = "登录"> </form> <% String adminname = request.getParameter("adminname"); String password = request.getParameter("password"); if(adminname!=null&&password!=null){ AdminDao admindao=new AdminDao(); System.out.print("test"); Admin admin=(Admin)admindao.queryAllAdmins(adminname); if(password.equals(admin.getPassword())){ response.sendRedirect("JxglSys/servlets/InitServlet"); } } %> </body> </html> ``` AdminDao.java ``` package dao; import java.sql.*; import java.util.ArrayList; import vo.Admin; public class AdminDao { public ArrayList queryAllAdmins(String adminname) throws Exception{ ArrayList admins= new ArrayList(); try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;DatabaseName=JXGL"; Connection conn = DriverManager.getConnection(url,"sa","nmybj.19981227"); System.out.print(adminname); String sql = "SELECT ADMINNAME,PASSWORD FROM ADMIN WHERE ADMINNAME = '"+adminname+"'"; Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(sql); while(rs.next()) { Admin admin = new Admin(); admin.setAdminname(rs.getString("ADMINNAME")); admin.setPassword(rs.getString("PASSWORD")); admins.add(admin); } rs.close(); stat.close(); } catch (SQLException e) { //e.printStackTrace(); System.out.print("Database error"); } return admins; } } ``` Admin.java ``` package vo; public class Admin { private String adminname; private String password; public String getAdminname() { return adminname; } public void setAdminname(String adminname) { this.adminname = adminname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ```

Java中怎么让list里的数据根据类别打印出来

![图片说明](https://img-ask.csdn.net/upload/201905/04/1556952734_560843.png) 我们要求做一个图书馆类的程序,我的做法是对象是图书,然后图书馆就是ArrayList,即把图书对象放进ArrayList。现在的问题是有一个要求是要我们根据作者或者category来打印出所有的图书。即如果按照category打印,一个category相同的所有图书打印过后再打印下个类型的图书。求教大佬怎么实现这个功能

java反射,自动调用方法,方法的返回值类型是不一定的,怎么得到方法的返回值类型的原来的类型!

java反射动态获取方法的返回值类型? ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668477_850877.png) ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668489_297052.png) 代码如下: ``` package javase; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; public class Person { static List<String> list; public void eat() { System.out.println("我是eat()函数"); } public String sayHello(String name) { return "hello,我是" + name + "!"; } public String jump(String name, int age) { return "hello,我是" + name + ",我今年" + age + "岁了!"; } public List<String> returnList() { // List<String> list = new ArrayList<String>(); list = new ArrayList<String>(); list.add("令狐冲"); list.add("韦小宝"); list.add("张无忌"); list.add("杨过"); list.add("乔峰"); return list; } public static void main(String[] args) throws Exception { Class cla = Class.forName("javase.Person"); Constructor constructor = cla.getConstructor(); Object obj = constructor.newInstance(); Method[] declaredMethods = cla.getDeclaredMethods(); for (Method method : declaredMethods) { System.out.println(method.getName() + " / " + method); Class[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length > 0) { System.out.print(method.getName() + "方法的参数类型:"); } else { System.out.print(method.getName() + "方法没有参数"); } for (Class parameterType : parameterTypes) { System.out.print(parameterType.getName() + "\t"); } System.out.println("\n--------------------------------------------------"); } System.out.println("******************************"); // 使用反射,动态调用对象的函数 Method method = cla.getMethod("eat"); Object returnValue = method.invoke(obj); System.out.println(returnValue); // 动态调用对象的函数 Method method2 = cla.getMethod("sayHello", String.class); Object returnValue2 = method2.invoke(obj, "令狐冲"); System.out.println(returnValue2); // 动态调用对象的函数 Method method3 = cla.getMethod("jump", String.class, int.class); Object returnValue3 = method3.invoke(obj, "令狐冲", 16); System.out.println(returnValue3); // 动态调用对象的函数 Method method4 = cla.getMethod("returnList"); Type returnType = method4.getGenericReturnType(); System.out.println(method4.getName() + "方法的返回值类型=" + returnType); /* * returnList方法返回值类型是List<String>,所以returnValue4变量原本的类型是List<String> * 还有一个问题值得我们思考,每个方法的返回值类型都可能不一样,我们在利用反射调用完invoke()方法后,得到的返回值类 * 型都是Object,怎么转换回每个方法它自己的原本的返回值类型呢? */ Object returnValue4 = method4.invoke(obj); System.out.println("方法的返回值类型:" + method4.getReturnType().cast(method4.invoke(obj))); System.out.println(returnValue4 + " / " + returnValue4.getClass()); for (String str : list) { System.out.println("利用反射自动调用完returnList方法后集合元素" + str); } List<String> returnValue5 = (List<String>) method4.invoke(obj); for (String string : returnValue5) { System.out.println(string); } } } ``` 一言以蔽之,我就是想做到如下的代码这样: ``` Method method4 = cla.getMethod("returnList"); //我想下面的Object变成动态数据类型(即returnList方法的返回值类型) Object returnValue4 = method4.invoke(obj); //有没有可能变成下面这样 method4.getReturnType() returnValue4 = (method4.getReturnType())method4.invoke(obj); //到时候就可以拿到每个方法的具体的返回值,方法返回Map,我就可以拿到Map,方法返回int,我就拿到int,方法返回String,我就拿到String,方法返回List<Student>,我就可以拿到List<Student> ``` 运行结果截图: ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668669_521947.png) ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668680_381683.png)

java提示没有为类型HASS定义方法Scanner(InputStream),println也是

import java.util.Scanner; public class If { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int max; if(a < b); { max = b; } else { max = a; } System.out.println(max); } }

Runnable 中抛出java.lang.ArrayIndexOutOfBoundsException: -1

[已解决] SimpleDateFormat.format并发调用会有问题private SimpleDateFormat.StringBuffer format(Date date, StringBuffer toAppendTo, FieldDelegate delegate) 里面用了calendar.setTime(date);这玩意是全局的,后面还会调用它,所以并发时候会出问题。 Random中protected Random.next(int bits);采用AtomicLong的CAS操作并发时候不会出问题。 ------------------------------------------------------------------------------ 每个Task有自己的ArrayList实例,在多线程情况下每个ArrayList实例应该不存在并发写入啊,为没什么还报ArrayIndexOutOfBoundsException: -1 求助大神,网上找了好久没结果。 ``` import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static java.lang.System.out; public class TestArrayList { public static void main(String[] args){ TestArrayList t= new TestArrayList(); t.testInsertRows(); } private static int millisecondOf1Day= 1000*3600*24; private static int millisecondOf5Min= 1000*60*5; private static final SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final ExecutorService pool= Executors.newFixedThreadPool(8); public void testInsertRows(){ Random random= new Random(); int taskId= 0; for(int i=0; i< 8; i++){ taskId++; pool.submit(new Task(taskId, 10000, null)); } out.println("all submited!"); } static class Task implements Runnable{ private Integer id; private List<Bean> list; private int rowCount; private int count=0; private Random random; public Task(Integer id, Integer rowCount, Random random){ this.id= id; this.list= new ArrayList<>(rowCount+1); this.rowCount= rowCount; // this.random= random; this.random= new Random(); } @Override public void run() { out.println("task:"+id+" is running! "+Thread.currentThread()); try{ for(int j=0; j< rowCount; j++ ){ Long randomTime= random.nextLong(); Date validityDate= new Date(randomTime- millisecondOf1Day), startDate= new Date(randomTime), endDate= new Date(randomTime+ 2*millisecondOf1Day); Bean bean = new Bean(); bean.setField0("K0000033"); bean.setField1("0001"); bean.setField2(sdf.format(validityDate)); bean.setField3(new Double(0.0).toString()); bean.setField4(sdf.format(startDate)); bean.setField5(sdf.format(endDate)); list.add(bean); } out.println("list is prepared in thread:"+id); Thread.sleep(millisecondOf5Min);// out.println(count+" rows has been inserted in thread:"+id); }catch (Exception e) { synchronized (out) { out.println("task:"+id+" in error"+Thread.currentThread()); e.printStackTrace(); out.println("task:"+id+" error info print completed"); } } } } } class Bean{ private String field0; private String field1; private String field2; private String field3; private String field4; private String field5; private String field6; /** * @return the field0 */ public String getField0() { return field0; } /** * @param field0 the field0 to set */ public void setField0(String field0) { this.field0 = field0; } /** * @return the field1 */ public String getField1() { return field1; } /** * @param field1 the field1 to set */ public void setField1(String field1) { this.field1 = field1; } /** * @return the field2 */ public String getField2() { return field2; } /** * @param field2 the field2 to set */ public void setField2(String field2) { this.field2 = field2; } /** * @return the field3 */ public String getField3() { return field3; } /** * @param field3 the field3 to set */ public void setField3(String field3) { this.field3 = field3; } /** * @return the field4 */ public String getField4() { return field4; } /** * @param field4 the field4 to set */ public void setField4(String field4) { this.field4 = field4; } /** * @return the field5 */ public String getField5() { return field5; } /** * @param field5 the field5 to set */ public void setField5(String field5) { this.field5 = field5; } /** * @return the field6 */ public String getField6() { return field6; } /** * @param field6 the field6 to set */ public void setField6(String field6) { this.field6 = field6; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Bean [field0=" + field0 + ", field1=" + field1 + ", field2=" + field2 + ", field3=" + field3 + ", field4=" + field4 + ", field5=" + field5 + ", field6=" + field6 + "]"; } } ``` task:1 is running! Thread[pool-1-thread-1,5,main] task:4 is running! Thread[pool-1-thread-4,5,main] task:3 is running! Thread[pool-1-thread-3,5,main] task:2 is running! Thread[pool-1-thread-2,5,main] task:5 is running! Thread[pool-1-thread-5,5,main] task:6 is running! Thread[pool-1-thread-6,5,main] all submited! task:7 is running! Thread[pool-1-thread-7,5,main] task:8 is running! Thread[pool-1-thread-8,5,main] task:7 in errorThread[pool-1-thread-7,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:7 error info print completed task:8 in errorThread[pool-1-thread-8,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:65) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:8 error info print completed task:4 in errorThread[pool-1-thread-4,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:62) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:4 error info print completed task:1 in errorThread[pool-1-thread-1,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:1 error info print completed task:5 in errorThread[pool-1-thread-5,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:65) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:5 error info print completed task:3 in errorThread[pool-1-thread-3,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:3 error info print completed task:6 in errorThread[pool-1-thread-6,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:6 error info print completed list is prepared in thread:2

ArrayList集合中的问题

package com.StuInfo; import java.util.*; public class Test { static ArrayList<Students> list=new ArrayList<Students>(); static Scanner input=new Scanner(System.in); public static void main(String[] args) { manageLogin(); } // 系统菜单 public static void manageLogin() { System.out.println("学员信息管理信统"); System.out.println("============"); System.out.println("1.录入学员信息"); System.out.println("2.根据学号查询学员信息"); System.out.println("3.修改学员信息"); System.out.println("4.根据学号删除学员信息"); System.out.println("5.统计学员平均考试成绩"); System.out.println("6.退出系统"); System.out.println("请输入菜单项:"); int num=input.nextInt(); switch(num){ case 1: addStu();break; case 2:checkById();break; case 3:update(); break; case 4:delete(); break; case 5: avg();break; case 6:exit(); break; } } //录入学员信息 public static void addStu(){ String answer=""; do{ answer="y"; Students stu=new Students(); System.out.print("请输入学生的学号: "); String stuid=input.next(); System.out.println("请输入学生的姓名:"); String stuname=input.next(); System.out.println("请输入学生的年龄:"); int age=input.nextInt(); System.out.println("请输入学生的成绩"); int score=input.nextInt(); if(list.isEmpty()){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else if(getById(stuid)==null){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else{ System.out.println("此学生已经存在!"); manageLogin(); } System.out.println("你是否要继续选择操作?y/n"); answer=input.next(); }while(answer.equals("y")); } //根据学号查询学员信息 public static void checkById(){ Students stu=new Students(); System.out.print("请输入您要查询学生的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("该学生不存在"); manageLogin(); }else if(s!=null){ Students ww=getById(stuid); System.out.println("该学员信息为:\n"); System.out.println("学号:"+ww.getAge()); System.out.println("姓名:"+ww.getName()); System.out.println("年龄:"+ww.getAge()); System.out.println("成绩:"+ww.getScore()); manageLogin(); } } //修改学员信息 public static void update(){ System.out.print("请输入您要修改学生的学号:"); int stuid=input.nextInt(); Students s=getById(stuid); //此行中getById方法报错,怎么回事? if(list.isEmpty()){ System.out.println("无学生信息!"); }else if(s!=null){ System.out.println("改后姓名:"); String name=input.next(); System.out.println("改后年龄:"); int age=input.nextInt(); System.out.println("改后成绩:"); int score=input.nextInt(); s.setName(name); s.setAge(age); s.setScore(score); System.out.println("修改成功!"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //根据学号删除学员信息 public static void delete() { System.out.println("请输入所要删除的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("尚未存入信息!"); manageLogin(); }else if(s!=null){ list.remove(s); System.out.println("删除成功"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //统计学员平均考试成绩 public static void avg(){ System.out.println("平均成绩为:"); int num=list.size(); int sun=0; if(list.isEmpty()){ System.out.println("未录入学生的信息!"); }else{ for(Students s:list){ //此行s:list 什么意思? sun+=s.getScore(); } System.out.println(sun/num); manageLogin(); } } //退出系统 public static void exit(){ System.out.println("你确定要退出系统吗?"+"y/n"); String answer=input.next(); if(answer.equalsIgnoreCase("y")){ System.exit(0); }else{ manageLogin(); } } public static Students getById(String id){ for(Students s:list){ if(s.getId().equals(id)){ return s; } } return null; } }

java中链表的克隆问题

代码如下: ``` import java.util.*; public class Example12_6 { public static void main(String args[]) { LinkedList<String> list1=new LinkedList<String>(); list1.add("A"); list1.add("B"); list1.add("C"); list1.add("D"); list1.add("E"); LinkedList<String> list2 =(LinkedList<String>)list1.clone(); //这里我有两个问题不明白, //第一是带有泛型信息的链表能这样强制转化吗?怎么感觉这样转化会出问题 //第二是LinkedList中的clone方法不是浅复制吗? //那么list2中的元素指向的不也是list1中的元素吗? //那么下面对list1进行洗牌后list2中的元素怎么不变呢? System.out.print("链表中的数据:"); Iterator<String> iter=list1.iterator(); while(iter.hasNext()) { String str=iter.next(); System.out.print(str+" "); } Collections.shuffle(list1); //洗牌 System.out.printf("\n洗牌后链表中的数据:"); iter=list1.iterator(); while(iter.hasNext()) { String str=iter.next(); System.out.print(str+" "); } System.out.printf("\n链表中的数据:"); iter=list2.iterator(); while(iter.hasNext()) { String str=iter.next(); System.out.print(str+" "); } Collections.rotate(list2,2); //向右旋转2步 System.out.printf("\n向右旋转2步后链表中的数据:"); iter=list2.iterator(); while(iter.hasNext()) { String str=iter.next(); System.out.print(str+" "); } } } ``` 本人还是小白一枚,虚心求教。 补充一下,关于上面我两个问题中,我第一个问题的疑惑来自于sun公司java泛型教程中的这段话: Another implication of the fact that a generic class is shared among all its instances, is that it usually makes no sense to ask an instance if it is an instance of a particular invocation of a generic type: ``` Collection cs = new ArrayList<String>(); if (cs instanceof Collection<String>) { ...} // illegal ``` similarly, a cast such as ``` Collection<String> cstr = (Collection<String>) cs; // unchecked warning ``` gives an unchecked warning, since this isn’t something the run time system is going to check for you. The same is true of type variables ``` <T> T badCast(T t, Object o) {return (T) o; // unchecked warning } ``` Type variables don’t exist at run time. This means that they entail no performance overhead in either time nor space, which is nice. Unfortunately, it also means that you can’t reliably use them in casts.

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Intellij IDEA 实用插件安利

1. 前言从2020 年 JVM 生态报告解读 可以看出Intellij IDEA 目前已经稳坐 Java IDE 头把交椅。而且统计得出付费用户已经超过了八成(国外统计)。IDEA 的...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

魂迁光刻,梦绕芯片,中芯国际终获ASML大型光刻机

据羊城晚报报道,近日中芯国际从荷兰进口的一台大型光刻机,顺利通过深圳出口加工区场站两道闸口进入厂区,中芯国际发表公告称该光刻机并非此前盛传的EUV光刻机,主要用于企业复工复产后的生产线扩容。 我们知道EUV主要用于7nm及以下制程的芯片制造,光刻机作为集成电路制造中最关键的设备,对芯片制作工艺有着决定性的影响,被誉为“超精密制造技术皇冠上的明珠”,根据之前中芯国际的公报,目...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

百度工程师,获利10万,判刑3年!

所有一夜暴富的方法都写在刑法中,但总有人心存侥幸。这些年互联网犯罪高发,一些工程师高技术犯罪更是引发关注。这两天,一个百度运维工程师的案例传遍朋友圈。1...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

内容导航: 1、TIOBE排行榜 2、总榜(2020年6月份) 3、本月前三名 3.1、C 3.2、Java 3.3、Python 4、学习路线图 5、参考地址 1、TIOBE排行榜 TIOBE排行榜是根据全世界互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据。

立即提问
相关内容推荐