Java学习日记-2 零零碎碎
一、使用Scanner类进行控制台的输入
文档中Scanner类的定义为A simple text scanner which can parse primitive types and strings using regular expressions(一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器)。
使用Scanner类,首先要导入 import.util.Scanner;
然后建立对象 Scanner scan = new Scanner(System.in);
然后就可以接收控制台输入的各种数据类型了。
比如:
int x = scan.nextInt();
String s = scan.next();
String s = scan.nextLine();
(next和nextLine的区别是,前者接收的字符串到第一个空格为止,后者接收的字符串可以包含空格,到回车为止)
double d = scan.nextDouble();
如果想输入一个字符,可以利用字符串的charAt(index)方法。
例如,char ch = scan.next().charAt(0);
二、字面量
Java中,字面量(literal)是指以人类语言形式出现的固定值。例如100,‘a’等。
Java中,字面量可以是任何基本数据类型。
默认情况下,整数字面量是int类型的,浮点字面量是double类型的,而这会带来一些麻烦。
例如:
1、float f = 0.1; 这个语句是通不过编译的,因为字面量0.1是double类型的,赋给float类型后,精度有所损失。
改为float f = (float)0.1; 即可。
2、接着上面的例子,f = f + 0.1;也是通不过编译的,原因同上,但神奇的是 f += 0.1; 是可以通过编译的。加完后,f仍然是float类型。
3、整数的在不超出类型表示范围内,遵循自动类型转换,例如byte b = 1; 和 short s = 100; 都是可以通过编译的。
三、Java基本数据类型中需要注意的一些地方
1、boolean类型不能用0和1表示,这是不同于C语言的地方,切记,切记,切记,重要的事情说三遍。
2、字符变量赋值时的各种花式
char ch = 'A'; char ch = '啊'; char ch = '\u655f';(这里用16进制数表示一个汉字的编码,在java的jdk下的bin目录里,有一个叫native2ascii.exe的程序,可以显示汉字编码) char ch = 3; char ch = '\123';(\后跟的是一个8进制数,数值代表着ASCII码,单引号不可省)。
3、关于无穷
Java中将正负无穷定义为浮点数,正无穷为POSITIVE_INFINITY,负无穷为NEGATIVE_INFINITY,用一个正浮点数除以0,得到正无穷,用一个负浮点数除以0,得到负无穷。如果是整数除以0,则会抛出ArithmeticException
四、常量
final int i = 123;
关于常量需要注意的是两条编码规范:1、常量名字一律大写,用下划线分割单词。 2、常量声明时就赋值。
五、关于自增自减符号
int i = 1;
i = (i++)+(++i); (结果为1+3=4)
i++和++i 作为独立语句出现时,没有任何区别,但当它们作为一个表达式的一部分时,就不同了。i++是将 i 的值作为表达式的值,然后i再增1;++i是将i先增1,然后将增1后的值作为表达式的值。
六、条件表达式的嵌套
exp1 ? exp2 : exp3;
exp1为Boolean表达式,它为true则整个表达式取exp2的值,它为false则取exp3的值。
如上,条件表达式就相当于if-else,下面用一个题目来实际应用一下条件表达式
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
grade = x >=90 ? 'A' : (x>=60 ? 'B' : 'C')
七、Java变量的作用域
1、一对花括号就是一个代码块,Java允许变量在任何代码块中声明。
2、一个代码块就是一个作用域。
3、作用域可以嵌套
class ScopeDemo{
public static void main(String[] asgs){
int x;
x = 10;
if(x==10){
int y = 20;
System.out.println("x and y:"+ x + " " + y );
x = y * 2;
}
//y = 100; //error!!! y在这里是不可知的,这一点和C/C++是一致的
x *= 2;
}
};
4、内部作用域声明的变量不能与包含它的作用域中已经声明的变量同名。(这一点和C/C++不同)
在C++中,这样的程序是可以编译运行的
#include <iostream>
using namespace std;
int main(){
;
){
;
cout<<"x = "<<x<<endl; //输出20
x = x * ;
}
cout<<"x = "<<x<<endl; //输出10
;
}
Java学习日记-2 零零碎碎的更多相关文章
- Java学习日记基础篇(六)—— 抽象类、接口、final
抽象类 为什么要有抽象类? 因为父类方法有不确定性,我们在Animal中定义了一个方法,但是它会被子类的方法覆盖掉,我们就不知道这个方法原本是做什么的 public class test1 { pub ...
- Java学习日记基础(五)——类、对象之this、静态变量(类变量)、静态方法(类方法)、四大特征
this 赵本山问奥尼尔:“我的爸爸的爸爸是谁?” 奥尼尔:“不知道” 赵本山:“你傻啊,是我爷爷” 奥尼尔回去问科比:“我的爸爸的爸爸是谁?” 科比:“不知道” 奥尼尔:”你傻啊,是赵本山的爷爷“ ...
- Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法
面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...
- Java学习日记——基础篇(二)基本语法
变量 变量和常量是程序处理的两种基本数据对象,变量是程序的基本组成单位 变量的目的就是确定目标并提供存放空间 public class Hello { public static void main( ...
- [转]Java学习日记之 volatile
用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.volatile就是用来 ...
- Java学习日记之 Java-其他类型
OK , 就绪, 第一篇博客开撸 ~ 先听了毕姥爷激情澎湃的其他类型 ,从这里开始入手吧 : (一)System类 System类代表系统类,系统的属性和方法都放在该类.System类是一个fina ...
- Java学习日记之 Java-IO流
Java中的IO流在处理上分为字节流和字符流.字节流和字符流的区别 : 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8 ...
- Java学习日记-10 集合
集合(Collection) 1. 什么是集合? 集合是一组对象组成的一个整体,又称为容器,集合类属于java.util包.集合不同于数组的地方在于,一是它的容量是可变的,二是集合中只能存储对象,不能 ...
- Java学习日记-2.3 基本数据类型和对象所占内存空间大小
转自:http://www.newsmth.net/nForum/#!article/Java/324167
随机推荐
- 案例:java中的基本排序
//冒泡排序 import java.util.Arrays; public class ForTest{ public static void main(String args[]){ int[] ...
- IOS 开发 【objective-c 基础1】
案例:读取本地硬盘上程序根目录下words.txt文件内容,显示每行的字符数. // // main.m // hello // // Created by swack on 15/11/27. // ...
- html.ex.day01
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【转】NSString / NSData / char* 类型之间的转换
原文 :http://www.cnblogs.com/pengyingh/articles/2341880.html NSString 转换成NSData 对象 NSData* xmlData = [ ...
- hibernate_validator_04
对象图--个人觉得就是关联验证 ean Validation API不仅能够用来校验单个的实例对象,还能够用来校验完整的对象图.要使用这个功能,只需要在一个有关联关系的字段或者属性上标注 @Valid ...
- Java基础--多线程的方方面面
1,什么是线程?线程和进程的区别是什么? 2,什么是多线程?为什么设计多线程? 3,Java种多线程的实现方式是什么?有什么区别? 4,线程的状态控制有哪些方法? 5,线程安全.死锁和生产者--消费者 ...
- 基于ThinkPHP+AJAX的省市区三级联动
练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...
- 安卓之cannot convert from Fragment1 to Fragment
在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment, 很是纳闷,我是参照一个开源代 ...
- 想追赶.Net的脚步?Java面前障碍重重
待到Java 8面世之时 .Net的进度时钟恐怕已经又走过了两到五年——届时微软做出的调整将使二者差距进一步拉大. 就在几周之前,我详细介绍了Java 8中值得期待的几大主要功能.不过当时我并没有提到 ...
- 分享Git的一些个人配置
先贴上自己.gitconfig的相关命令,我再具体说一下 diff.external=~/.git-meld.sh http.sslverify=false http.proxy=http://127 ...