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
随机推荐
- NYOJ 1107 最高的奖励(贪心+优先队列)
最高的奖励 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 请问:挖掘机技术哪家强?AC了告诉你! 给你N(N<=3*10^4)个任务,每个任务有一个截止完成时 ...
- Python开发【第九篇】:HTML (二)
python[第十四篇]HTML基础 时间:2016-08-08 20:57:27 阅读:49 评论:0 收藏:0 [点我收藏+] 标签: 什么是HTML? H ...
- 5事件DOM零级事件跟DOM二级事件
事件的行为传播,行为本身跟事件绑定没有关系:1.全新认识事件(某一个具体的行为)->行为本身:浏览器天生自带的一些行为操作->click,mouseover(mouseenter),mou ...
- ASPNET5的依赖注入
ASP.NET5设计的时候就是以DI为基础的,它可以利用内建的框架在Startup类的方法中,把依赖注入进去.应用服务也可以被配置的注入.默认的服务容器提供一些基本的功能,它并不打算代替现代主流的DI ...
- (转)DEDECMS模板原理、模板标签学习 - .Little Hann
本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制 ...
- oracle系统包——dbms job用法(oracle定时任务)
用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.su ...
- Swift - 08 - 元组
//: Playground - noun: a place where people can play import UIKit // 元组就是将多个不同的值集合成一个数据 /* 元组是Object ...
- 0.0C语言重点问题回顾
左值和右值得区别:左值是用来表明变量的身份的,右值更加侧重于值本身: void*是个例外,它只有基地址没有类型信息,所以无法解引用. int *p = malloc(100); char *s = m ...
- 【USACO 3.2.2】二进制数01串
[描述] 考虑排好序的N(N<=31)位二进制数. 你会发现,这很有趣.因为他们是排列好的,而且包含所有可能的长度为N且含有1的个数小于等于L(L<=N)的数. 你的任务是输出第I(1&l ...
- python3 解析apk图标
有两处值小点,一是如何解压缩,另一个是如何写文件,第二点上我找的是phthon2的代码,一直写文件的时候报不是字符串的问题,将打开方式加上"b“的模式搞定 print文件出来直接删除了,原因 ...