1.为什么用StringBuilder
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于
生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响。
2.
create table sm_grade(
name varchar(32),
subject varchar(18),
grade int
);
insert into sm_grade(name, subject, grade) values
('tom', '语文', 80),
('tom', '数学', 78),
('tom', '物理', 76),
('marry', '语文', 90),
('marry', '数学', 80),
('marry', '物理', 84);
select name, avg(g.grade) as '理科平均分' ,
(select grade from sm_grade where name=g.name and subject='语文') as '文科平均分'
from sm_grade g where g.subject in ('数学', '物理') group by g.name ;