(转载)system.out.println

本文探讨了Java中System.out.println()方法的功能,特别是当其参数为数组等对象时的行为。通过查阅API文档,揭示了默认打印行为背后的原理,并介绍了如何正确打印数组元素。
学习java已经有一段时间了,这段时间里感觉到了java的博大精深,同时也是产生了不少的疑惑。
学习java的时候产生的第一个疑惑是关于System.out.println()的,自己不知道这个方法究竟可以输出什么类型的数据。我试过每一种基本数据类型,发现都可以输出。后来有一次在学习数组的时候老师介绍了一种逐个打印出数组元素的方法,是采用了循环的方法;当时心里就想:为什么不直接用System.out.println()打印出来呢?课后自己试了一下:
int[] bb = {1,2,3,4,5};
System.out.println (bb);
在一个main方法中实现这两条语句后得到的结果是:
[I@1fb8ee3
心里很不明白为什么是这个结果,当时也看不懂这个结果,以为这是个乱码。
后来我看了API的帮助文档中关于System类的介绍,其中有:
System
static PrintStream out
“标准”输出流。

以下是关于System.out的详细介绍:
out
public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是:
System.out.println(data)
请参阅 PrintStream 类中的 println 方法。

于是又找到文档中关于PrintStream 的介绍,其中有这么一句
void println(Object x)
打印 Object,然后终止该行。

详细介绍是:
println
public void println(Object x)打印 Object,然后终止该行。此方法的行为就像先调用 print(Object) 然后调用 println() 一样。
参数:
x - 要打印的 Object。
看来System.out.println()是可以直接打印对象类型的,但是自己在打印int[] bb时得到的却不是数组的元素呢........
记得老师还说过一个toString()方法,可以返回对象的字符串表示形式,在Object类的介绍中又看到这样一条:
toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。
难道将一个对象作为System.out.println()的参数时输出
的结果就是跟这个方法有关?
另外在类 PrintStream中还看到这样一个方法:
void println(char[] x)
打印字符数组,然后终止该行。

System.out.println()可以直接打印字符数组?
char[] charArray={'a','b','c','d','e'};
System.out.println (charArray);
试了一下果然可以直接输出!
public class HelloWord { //类变量:加上关键字static //类变量是从水属于这个类的,会随着这个类一起出来和消失。 static double saLary = 2500; //实例变量:写在方法的外面,类得 里面。从属于对象或者是从属于这个类,要通过这个类才能使用它,可以不设置初始值 String name; int age; //主程序的方法或者是叫mian方法 public static void main (String[] args){ //局部变量是写在方法里面的,只对这个方法负责,跳出方法之外就不能被使用 //所有的局部变量必须声明和设置初始值 int i = 10; System.out.println(i); //使用面向对象的范畴 //左边的HelloWord为自定义类型,helloWord为引用类型 //变量类型+变量名字=值为new 变量HelloWord();将相当于拿到了自己,也就是把自己给自己才能拿到自己的实例变量 //如果实例化对象不给初始值,则会默认输出默认初始化的数值。 HelloWord helloWord= new HelloWord(); System.out.println(helloWord.name); System.out.println(helloWord.age); //类变量:加上关键字static //如果去点static则不会被调用 System.out.println(saLary); } //新写的一个增加的方法 public void add(){ //这里不能说输出变量i是因为局部变量不在add的方法里面。 System.out.println(i); HelloWord helloWord= new HelloWord(); //这里的add方法可以调用实例变量,是因为add方法在实例变量的作用域内 System.out.println(helloWord.name); System.out.println(helloWord.age); //这里的add方法也作用在类变量的作用域内,所以可以调用类变量 System.out.println(saLary); } ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/a25847a/article/details/144185202 public class HelloWord { //类变量:加上关键字static //类变量是从水属于这个类的,会随着这个类一起出来和消失。 static double saLary = 2500; //实例变量:写在方法的外面,类得 里面。从属于对象或者是从属于这个类,要通过这个类才能使用它,可以不设置初始值 String name; int age; //主程序的方法或者是叫mian方法 public static void main (String[] args){ //局部变量是写在方法里面的,只对这个方法负责,跳出方法之外就不能被使用 //所有的局部变量必须声明和设置初始值 int i = 10; System.out.println(i); //使用面向对象的范畴 //左边的HelloWord为自定义类型,helloWord为引用类型 //变量类型+变量名字=值为new 变量HelloWord();将相当于拿到了自己,也就是把自己给自己才能拿到自己的实例变量 //如果实例化对象不给初始值,则会默认输出默认初始化的数值。 HelloWord helloWord= new HelloWord(); System.out.println(helloWord.name); System.out.println(helloWord.age); //类变量:加上关键字static //如果去点static则不会被调用 System.out.println(saLary); } //新写的一个增加的方法 public void add(){ //这里不能说输出变量i是因为局部变量不在add的方法里面。 System.out.println(i); HelloWord helloWord= new HelloWord(); //这里的add方法可以调用实例变量,是因为add方法在实例变量的作用域内 System.out.println(helloWord.name); System.out.println(helloWord.age); //这里的add方法也作用在类变量的作用域内,所以可以调用类变量 System.out.println(saLary); } public class HelloWord { //类变量:加上关键字static //类变量是从水属于这个类的,会随着这个类一起出来和消失。 static double saLary = 2500; //实例变量:写在方法的外面,类得 里面。从属于对象或者是从属于这个类,要通过这个类才能使用它,可以不设置初始值 String name; int age; //主程序的方法或者是叫mian方法 public static void main (String[] args){ //局部变量是写在方法里面的,只对这个方法负责,跳出方法之外就不能被使用 //所有的局部变量必须声明和设置初始值 int i = 10; System.out.println(i); //使用面向对象的范畴 //左边的HelloWord为自定义类型,helloWord为引用类型 //变量类型+变量名字=值为new 变量HelloWord();将相当于拿到了自己,也就是把自己给自己才能拿到自己的实例变量 //如果实例化对象不给初始值,则会默认输出默认初始化的数值。 HelloWord helloWord= new HelloWord(); System.out.println(helloWord.name); System.out.println(helloWord.age); //类变量:加上关键字static //如果去点static则不会被调用 System.out.println(saLary); } //新写的一个增加的方法 public void add(){ //这里不能说输出变量i是因为局部变量不在add的方法里面。 System.out.println(i); HelloWord helloWord= new HelloWord(); //这里的add方法可以调用实例变量,是因为add方法在实例变量的作用域内 System.out.println(helloWord.name); System.out.println(helloWord.age); //这里的add方法也作用在类变量的作用域内,所以可以调用类变量 System.out.println(saLary); } HelloWord helloWord= new HelloWord(); System.out.println(helloWord.name); System.out.println(helloWord.age);解析一下这些
最新发布
10-12
手把手教我怎么用这些代码实现java登录与注册package com.myhomework; import java.util.Scanner; /*作者:陈天祥 * 时间:2016.10.13 * 功能:登录系统 */ public class LoginService_1 { public static void main(String[] args) { String []user = new String[2]; int []password = new int[2]; //选择菜单 int selects = selecMenu(); if(selects == 1) { loginIf(user,password); } else { boolean flag = regist(user,password); if(flag) { System.out.println("注册成功!"); int s = selecMenu(); if(s == 1) { loginIf(user,password); } else { regist(user,password); } } } } public static void loginIf(String []user,int []password) { //如果密码匹配则,输出登录成功就返回true,否则输入, //密码或者用户名错误false,请重新输入 boolean flag = login(user,password); if(flag){ System.out.println("登录成功!"); } else { System.out.println("登录失败!"); } } /** */ public static int selecMenu() { System.out.println("1:登录"); System.out.println("2:注册"); Scanner input = new Scanner(System.in); System.out.println("选择菜单:"); int selects = input.nextInt(); return selects; } public static boolean login(String []user,int []password) { Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String userName = input.nextLine(); System.out.println("请输入密码:"); int pwd = input.nextInt(); //通过userName数据,找到user下标, int index = -1; for (int i = 0; i < user.length; i++) { if(user[i].equals(userName)) { index = i; } } //然后通过user下标找到password中相应的密码。 if(password[index] == pwd) { return true; } else { System.out.println("用户名或者密码输入错误,请从新输入!"); } return false; } public static boolean regist(String []user,int []password) { for (int i = 0; i < password.length; i++) { Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String userName = input.nextLine(); user[i] = userName; System.out.println("请输入密码:"); int pwd = input.nextInt(); password[i] = pwd; } return true; } //數組 // String []user = new String[10]; // int []password = new int[10]; } ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.c
03-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值