//Color类
创新互联专注于企业成都营销网站建设、网站重做改版、高平网站定制设计、自适应品牌网站建设、H5场景定制、商城开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为高平等各大城市提供网站开发制作服务。
public class Color {
private String colorName;
final public void setColor(String color){
this.colorName = color;
}
public String getColor(){
return this.colorName;
}
}
//White类
public class White extends Color{
public White(){
this.setColor("white");
}
public String getColor() {
return super.getColor();
}
}
//Red类
public class Red extends White{
public Red(){
this.setColor("Red");
}
}
//Prism类
public class Prism {
static public void activePrism(Color c){
if(c.getColor().equals("white")){
Red r = new Red();
Blue b = new Blue();
System.out.println(r.getColor());
System.out.println(b.getColor());
}
else{
return;
}
}
}
//测试类
public class ColorTest {
public static void main(String[] args) {
White w = new White();
Prism.activePrism(w);
}
}
其他颜色自己写吧。
Java源代码:
public class Test {
public static void main(String[] args) {
Point p1 = new Point(4, 5);
System.out.printf("点p坐标为(%f,%f)\n", p1.getX(), p1.getY());
p1.setX(3);
p1.setY(4);
System.out.printf("重置后点p坐标为(%f,%f)\n", p1.getX(), p1.getY());
System.out.printf("点(%f, %f)到原点的距离的平方为%f\n", p1.getX(), p1.getY(),
p1.distance());
Point p2 = new Point(1, 2);
System.out.printf("点(%f,%f)到点(%f,%f)的距离的平方为%f\n", p1.getX(),
p1.getY(), p2.getX(), p2.getY(), p1.distance(p2));
}
}
class Point {
protected double x;
protected double y;
public Point(){
}
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void setX(double x) {
this.x = x;
}
public double getX() {
return this.x;
}
public void setY(double y) {
this.y = y;
}
public double getY() {
return this.y;
}
public double distance() {
return Math.pow(x, 2) + Math.pow(y, 2);
}
public double distance(Point p) {
return Math.pow(this.x - p.x, 2) + Math.pow(this.y - p.y, 2);
}
}
运行测试:
何止手写代码啊、直接给一段英文文档要你翻译的都有。建议笔试之前最好上网搜下该公司去年的笔试题,会很有帮助的,腾讯今年实习生题目跟去年有很大相似。
一般小公司手写代码都是很简短的代码,按照要求打印乘法表、各种排序、查找算法之类的,有的或许要给一套你,比如画er图,映射成代码,然后给出问题,用代码解决。比较难的会直接给英文题目你做,比如百纳科技(海豚浏览器)2013实习生招聘,直接给的英文题目,这就跟acm差不多了,我是灰溜溜的直接拿了试题就走了的,没脸交卷子
三大排序
import java.util.Arrays;
public class ArraySort {
public static void main(String[] args) {
int[] arr={43,21,40,35,87,15};
//选择排序
//choiceSort(arr);
//冒泡排序
//buddleSort(arr);
//插入排序
insertSort(arr);
}
public static void insertSort(int[] arr) {
//21,35,40, 43,87,15
for(int j=1;jarr.length;j++){
int tmp=arr[j];//35
int i=j-1; //i:2 1
/*for(;i=0;i--){
//i:2: 4335
//i:1: 4035
//i:0: 2135
if(arr[i]tmp){
arr[i+1]=arr[i];
}else{
break;
}
}*/
for(;i=0arr[i]tmp;i--){
arr[i+1]=arr[i];
}
arr[i+1]=tmp;
System.out.println(
"最终结果为:"+Arrays.toString(arr));
}
}
public static void buddleSort(int[] arr) {
System.out.println("排序前的结果为:"
+Arrays.toString(arr));
for(int j=0;j=arr.length-2;j++){
for(int i=0;i=arr.length-2-j;i++){
System.out.println("第"+i+"次交换前:"
+Arrays.toString(arr));
if(arr[i]arr[i+1]){
int tmp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=tmp;
}
System.out.println("第"+i+"次交换后:"
+Arrays.toString(arr));
}
System.out.println("排序的结果为:"
+Arrays.toString(arr));
}
}
public static void choiceSort(
int[] arr) {
for(int i=0;i=arr.length-2;i++){
for(int j=i+1; j=arr.length-1;
j++){
System.out.println("第"+
j+"次交换前:"+Arrays.toString(arr));
if(arr[i]arr[j]){
int tmp=arr[j];
arr[j]=arr[i];
arr[i]=tmp;
}
System.out.println("第"+
j+"次交换后:"+Arrays.toString(arr));
}
}
System.out.println("排序的结果为:"
+Arrays.toString(arr));
}
}
第一个问题:
我建议你不要用工具,最好用手写代码,然后javac java 编译运行,你就能清楚了,
第二个,有难度哦,要是你可以,你可以直接重写Object类,(注:是在JDK里面重写Object类,),在Object的构造方法里面用一个静态变量去记录实例化Object的次数。
因为所有类都继承自Object,所以,你就需要监控Object的实例化次数,就OK了,
第三个问题,和第一个问题一样的。
import java.util.*;
public class Test24 {
public static void main(String[] args) {
int year1, month1, day1;
int num;
Scanner scan = new Scanner(System.in);
MyDate d1, d2;
System.out.println("请输入一个日期");
System.out.print("年:");
year1 = scan.nextInt();
System.out.print("月:");
month1 = scan.nextInt();
System.out.print("日:");
day1 = scan.nextInt();
try{
d1 = new MyDate(year1, month1, day1);
System.out.println(d1.toString() + " 是一个合法日期");
}
catch(Exception e){
System.out.println(" 非法日期");
}
System.out.println("请输入一个日期");
System.out.print("年:");
year1 = scan.nextInt();
System.out.print("月:");
month1 = scan.nextInt();
System.out.print("日:");
day1 = scan.nextInt();
System.out.println("时间间隔:");
num = scan.nextInt();
try{
d1 = new MyDate(year1, month1, day1);
d2 = d1.dateAdd(num);
System.out.println(d1.toString() + " 在" + num + "天后就是 " + d2.toString());
}
catch(Exception e){
System.out.println(" 非法日期");
}
try{
d1 = new MyDate(2009, 2, 27);
d2 = new MyDate(2011, 3, 1);
num = d1.dateDiff(d1, d2);
System.out.println(d1.toString() + " ~ " + d2.toString() + " 相隔 " + num + " 天");
}
catch(Exception e){
System.out.println(" 非法日期");
}
}
}
class MyDate{
private int year;
private int month;
private int day;
private int[] days = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public MyDate(){
}
public MyDate(int year, int month, int day) throws Exception{
if(year 0 || month1 || month12 || day1 || daydays[month-1]){
throw new Exception("非法日期");
}
if(month == 2){
if(isLeapYear(year)==true day29){
throw new Exception("非法日期");
}
if(isLeapYear(year)==false day28){
throw new Exception("非法日期");
}
}
this.year = year;
this.month = month;
this.day = day;
}
//给定一个日期值,计算若干天后的日期值
public MyDate dateAdd(int num) throws Exception{
MyDate d = new MyDate(this.year, this.month, this.day);
days[1] = isLeapYear(d.year) ? 29 : 28;
d.day += num;
if(num 0){
while(d.day days[d.month-1]){
d.day -= days[d.month-1];
d.month++;
if(d.month 12){
d.month = 1;
d.year++;
days[1] = isLeapYear(d.year) ? 29 : 28;
}
}
}
else{
while(d.day = 0){
d.day += days[(d.month+10)%12];
d.month--;
if(d.month 1){
d.month = 12;
d.year--;
days[1] = isLeapYear(d.year) ? 29 : 28;
}
}
}
return d;
}
//如果有两个日期值,计算他们相距的天数。
public int dateDiff(MyDate d1, MyDate d2) throws Exception {
MyDate date1 = new MyDate(d1.year, d1.month, d1.day);
MyDate date2 = new MyDate(d2.year, d2.month, d2.day);
int i;
date1.days[1] = isLeapYear(date1.year) ? 29 : 28;
for(i=1; idate1.month; i++){
date1.day += date1.days[i-1];
}
date2.days[1] = isLeapYear(date2.year) ? 29 : 28;
for(i=1; idate2.month; i++){
date2.day += date2.days[i-1];
}
if(date1.year date2.year){
for(i=date1.year; idate2.year; i++){
date2.day += isLeapYear(i) ? 366 : 365;
}
}
else if(date1.year date2.year){
for(i=date2.year; idate1.year; i++){
date1.day += isLeapYear(i) ? 366 : 365;
}
}
return date2.day - date1.day;
}
public boolean isLeapYear(int year){
return ((year%400==0) || (year%4==0 year%100!=0)) ? true : false;
}
public String toString(){
StringBuffer buff = new StringBuffer();
if(year 10){
buff.append("000" + year);
}
else if(year 100){
buff.append("00" + year);
}
else if(year 1000){
buff.append("0" + year);
}
else{
buff.append(year);
}
if(month 10){
buff.append("-0" + month);
}
else{
buff.append("-" + month);
}
if(day 10){
buff.append("-0" + day);
}
else{
buff.append("-" + day);
}
return buff.toString();
}
}
运行测试:
请输入一个日期
年:2011
月:2
日:29
非法日期
请输入一个日期
年:2011
月:2
日:27
时间间隔:
2
2011-02-27 在2天后就是 2011-03-01
2009-02-27 ~ 2011-03-01 相隔 732 天