JavaSE基础01

来源:互联网 发布:日理万机的网络意思 编辑:程序博客网 时间:2024/06/07 04:49

1.标识符和关键字

关键字:被Java赋予特定意义的单词,组成关键字的字母都是小写。

标识符:给类、接口、方法、变量等起名字时使用的字符序列。
标识符组成规则: a、英文字母区分大小写(不能是java中的关键字)
                        b、数字字符(但不能以数字开头)
                        c、$和_

2.基本数据类型

java一共有8种基本数据类型,其中4种整型,2种浮点类型,一种字符类型char和一种用于表示真值的boolean类型。

整型:

java整型类型存储需求                                        取值范围   int    4字节                        -2147483648 ~ 2147483647 short    2字节                              -32768 ~ 32767  long    8字节      -9223372036854775808 ~ 9223372036854775807  byte    1字节                                  -128 ~ 127(特别注意避免溢出)


*注:对于整数类型默认int型,使用long类型定义变量,在当前变量值的后面加上L(如4000000000L)。

public class Number {public static void main(String[]args){int myint = 12345;short myshort = 5345;byte mybyte = 125; //注意byte类型的取值范围避免溢出long mylong = 43513552L;long result = myint+myshort+mybyte+mylong;//几种数据求和System.out.println("四种类型相加结果:"+result);}}


浮点型:

浮点类型   类型   存储需求                                 取值范围  float      4 字节                     大约+-3.40282347E+38F(有效位数6-7位) double       8字节      大约+-1.79769313486231570E+308(有效位数为15位)

 *注:浮点类型默认双精度double,定义float类型在该变量后面加上F。

public class Number2 {public static void main(String []args){float f1 = 13.23f;double d1 = 123.12;double d2 = 321.21;double result = f1+d1+d2;System.out.println("浮点类型相加结果为:"+result);}}

*命令System.out.println将打印出0.8999999999999999,而不是期望的0.9,主要原因是浮点数值采用二进制系统表示,二进制系统中无法精确的表示分数1/10,如果需要在数值中不含有任何舍入误差,应使用BigDecimal类。

如果想对浮点类进行舍入运算,得到更接近的整数,使用Math.round方法。

public class Number7 {public static void main(String[]args){double x = 8.999999;int y  =(int)Math.round(x);System.out.println(y);}}


char类型:

char类型用来表示单个字符,使用单引号括起来的单个字母或数字,如'A','a','0',而"A"则表示包含A的字符串。

'a' = 97 ; 'A' = 65 ; '0' = 48;

char x = 'a';也可以写成char x = 97;

public class Number3 {public static void main(String []args){int m = 'd';  //定义整型变量char n  = 97;  //定义char类型变量System.out.println("字符d的Asc码为:"+m);System.out.println("97对应的Asc码为:"+n);}}


布尔类型:

布尔类型又称逻辑类型,只有true和false两个值,分别代表布尔逻辑中的真和假。

3.变量

定义一个变量就是告诉编译器这个变量属于哪一类型,这样编译器才知道需要配置多少空间,以及存放什么样的数据。变量都有一个变量,变量名必须是合法的标识符,内存空间内的值就是变量值,声明变量示可以不赋值也可以直接赋值。

定义变量的注意事项:a、变量名首字母小写,不能使用java关键字
                                b、变量名不能重复
                                c、可以多次赋值
public class number4 {public static void main(String[]args){int i ;  //定义变量ii = 100; // 给i赋值System.out.println("i的值为:"+i);i = 1000; // 变量i实现多次赋值System.out.println("i现在的值为:"+i);}}


4.常量

在程序执行过程中其值不发生改变的量。

常量的分类字面值常量字符常量(使用单引号括起来的内容)、字符串常量(使用双引号括起来的内容)、整数常量、小数常量、布尔常量、空常量自定义常量 final关键字(final finally finalize的区别)

5.运算符

算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取余) 


*除法默认取整,想让结果显示小数可以乘以一个浮点类型数据

public class Number6 {public static void main(String []args0){float a = 1.5f;int b = 1;System.out.println("a+b="+a+b);// 字符串与一个非字符串拼接时,后者被转换为字符串,无法实现预期功能System.out.println("a+b="+(a+b));System.out.println("a-b="+(a-b));System.out.println("a*b="+a*b);System.out.println("a/b="+a/b);System.out.println("a%b="+a%b);}}



除法运算时,整数被0除将会产生ArithmeticExpection的异常,浮点数被0除将会得到无穷大或NaN的结果。

public class Number5 {public static void main(String[] args){int  a = 7;int b = 0;double result = a/b;System.out.println("运算结果:"+result);}}


自增自减运算符:++ 或 --

单目运算符,可以放在操作元之前也可以放在操作元之后,操作元必须是一个整型浮点型变量

++,--放在操作元之前,先自增或自减1,再运算;

++,--放在操作元之后,先运算,再自增或自减1;

public class Number8 {  public static void main(String[]args){  int i = 5;  int j = 6;  int m = 1+(i++);  int n = 1+(j--);  System.out.println(m);  System.out.println(n);  System.out.println(i);  System.out.println(j);  }}



public class Number1 {public static void main(String []args){int i = 5;int j = 6;int m = 1+(++i);int n = 1+(--j);System.out.println(m);System.out.println(n);System.out.println(i);System.out.println(j);}}



赋值运算符: =

=右边的值赋值给左边,左边必须是一个变量,而右边所赋的值可以是任何数值或者表达式,包括变量、常量、或有效表达式。
扩展赋值运算符:+=、-=、*=、/=、%=

比较运算符:>、<、>=、<=、==、!=

比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false,通常在条件语句中作为判断的依据。
public class Number9 {public static void main(String[] args){int a = 1 ; int b = 2 ; System.out.println(a>b);System.out.println(a<b);}}


逻辑运算符:&、|、^(异或)、!

&:有false则false
 | :有true则true
^ :相同false不同true
 ! :非false则true  (!的结合方向是从右向左
 
扩展逻辑运算符:&&、|| (具有短路效果)&&比||的优先级高
第一个操作数确定表达式的值第二个操作数不必计算
public class Number10 {public static void main(String[] args){int number1 = 2;int number2 = 3;int number3 = 4;System.out.println((number1<number2)&&(number2>number3));System.out.println((number1<number2)||(number2)>number3);}}


位运算符:&、|、^(异或)、~(非)

按位与&:两个操作数对应的位数都是1,结果位才是1,否则为0。如果两个操作数的精度不同,则结果与精度高的操作数相同。
按位或| :两个操作数对应的位数都是0,结果位才是0,否则为1。如果两个操作数的精度不同,则结果与精度高的操作数相同。
按位非~:将操作数二进制中的1全部修改为0,0全部修改为1。
按位异或^: 当两个操作数的二进制表示相同时,结果为0,否则为1。如果两个操作数的精度不同,则结果与精度高的操作数相同。

移位运算符:<<、>>、>>>(无符号右移)

移位运算符的操作数类型只有byte、short、char、int、long共5种。
<<:左移运算符将左边的操作数在内存种的二进制数据左移右边操作数指定的位数,左边移空的部分补0。
>>:右移运算符最高位是0,左移空的位就填入0,如果最高位是1,右移空的位就填1,使用方法与左移类似。
>>>:无符号右移不管最高位是0还是1,右移空的高位都填0。

*移位能够实现整数除以或乘以2的n次方的效果,例如y<<2与y*4的效果相同;y>>2与y/4的效果相同。
 一个数左移n位,就是将这个数乘以2的n次方;一个数右移n位,就是将这个数除以2的n次方。
public class Myclass {public static void main(String []args){int y = 1;int m = (y << 2);int x = 1 ;int n = (x*4);System.out.println(m==n);}}


三目运算符:(表达式)?true的结果:false的结果;

6.强制类型转换

数据从占用储存空间较小的类型转换位占用储存空间较大的数据类型时,做自动类型转换,反之则做强制类型转换。
格式:目标数据类型 变量名 = (目标数据类型)(值)
byte、short、char之间不转换,一旦参与运算,提升顺序:int------>long------->float------>double

不要再布尔类型和任何数值类型之间进行强制类型转换。

例:a、short  s = 1;

               s = s + 1;

         b、 short s = 1;

               s += 1 ;

 哪个在执行时会出现问题?

a有问题,应改为s=(short)(s+1);b中因为扩展运算符隐藏了默认的强制类型转换。

7.输入输出

读取输入:

标准输出流调用System.out.println方法即可,读取标准输入流System.in首先要构造一个Scanner对象,并于标准输入流System.in关联。

Scanner sc = new Scanner(System.in)
读取字符,调用nextLine方法

读取整数,调用nextInt方法

读取浮点数,调用nextDouble方法

在程序的最开始添一行import  java.util.*;

import java.util.*;public class Test1 {public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.print("请输入你的姓名:");        String name = sc.nextLine();        System.out.print("请输入你的年龄:");        int age =sc.nextInt();        System.out.println("Hi,"+name+",明年你就"+(age+1)+"岁了!");}}


import  java.util.Scanner;public class Practice01 {public static void main(String [] args) {Scanner  sc =new Scanner(System.in);System.out.print("请输入第一个数据:");int  a = sc.nextInt();System.out.print("请输入第二个数据:");int b = sc.nextInt();int m = (a>b)?a:b;System.out.println("这两个数据中较大的一个是:"+m);}}