java se程序设计_Java SE之基本程序设计结构

概述:

0.注释

1.基本数据类型(有且仅有8个):

1.1 整型:int,short,long,byte(表示一个字节,[-128,127])

1.2 字符型:char

1.3 浮点型:float,double

1.4 布尔型:boolean

1.5 注:String(属于引用类型),不属于基本数据类型。

数据类型有(3种):基本数据类型,枚举类型,引用类型(Reference Type)

2.运算符:++,--,+,-,*,/,[],(),<>,?: .etc

2.1 严格的浮点运算结果:在该方法的修饰符中加上关键字strictfp(Eg:public static strictfp main(String [] args))

3.变量

3.1 变量

3.2常量(final)

3.2.0 含义:表示这个变量只能被赋值一次。(类比C++的const)

3.2.1 修饰符:final;常量名规范:一般地,大写

3.2.2 类常量(修饰符:static final 变量):可以使该变量成为在一个类的多个方法中使用的常量

3.2.3 Java暂时保留 const关键字。

4.字符串:

4.1 String类:

4.0 概念:

4.0.1.String是final类,不可以被继承。

String不属于基本数据类型。

4.1.1 子串

4.1.2  拼接

4.1.3 不可变字串:

只读字符串。(final决定)

String类没有提供用于修改字符串的方法。

优点:不可变字符串可以让字符串共享。

各种字符串存放在公共的存储池中。

字符串变量指向存储池相应的位置。(类似于 char*指针)

(注意:Eg:greeting = greeting.substring(0,3)+"p!" 的物理变化过程所产生的空间浪费和低下的效率)

4.1.4 检验字符串是否相等

0.原因:一定不能使用==运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放在同一个位置。当然,如果字符串放置在同一位置上,它们必然相等。但是,它们完全有可能将内容相等的多个字符串的拷贝放置在不同的位置上。

注:实际上,只有字符串常量是共享的,而+或substring等操作产生的结果并不是共享的。

1.方法:equals(),equalsIgnoreCase(), compareTo() .etc

2.String str1 = "hello";

String str2 = "he" + new String("llo");

System.err.println(str1 == str2);

答案:false

解析:因为 str2 中的 llo 是新申请的内存块,而 == 判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是 true 了。

4.1.5 空串("")与Null串

4.1.6 代码点与代码单元

1)方法(java.lang.string):

length(),

charAt(var),

equals(var),

indexOf(var),

replace(args,args),

trim(),

substring(---)

toLowerCase(),

toUpperCase() .etc

2)注释:类似于C/C++,Java字符串的代码单元和代码点从0开始计数。

4.1.7String与字符串的区别:【见】

4.2 StringBuild类(jdk 1.5)/StringBuffer类

4.2.1 弥补和提高String类的空间效率和时间效率

4.2.2 方法(java.lang.StringBuilder):

stringbuilder.append(str);

stringbuilder.append(char);

String completeString = builder.toString();

4.2.3 StringBuilder与StringBuffer的区别:

0)StringBuilder与StringBuffer的API均相同

1)StringBuilder类的前身就是StringBuffer类,StringBuilder类的效率高于StringBuffer类

2)StringBuffer允许采用多线程的方式执行添加/删除字符的操作。

StringBuilder支持所有字符串在一个单线程中编辑(一般地)

(因:StringBuilder的所有方面都没有被 synchronized(同步的) 修饰)

参考文档:【String s=new String("abc")创建了几个对象?】http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html;

5.输入输出:

5.1读取输入

Scanner in = new Scanner(System.in)

Scanner in = new Scanner(Paths.get("file.txt")) (文件的输入输出)

nextLine():输入行可以包含空格

next():输入行不包含空格

hasNext()

nextInt()读取整形 .etc

Scanner类不适合从控制台读取密码:

0.java.lang.System: static Console console()

1.(Console cons = System.console();)

2.java.io.Console:readPassword();readLine()

5.2格式化输出

1.printf() 与%字符的结合:

d 十进制整数

s 字符串

f 定点浮点数

%百分号

tx 日期【x为日期和时间的转换符(见 Java核心技术卷I Page:58)】 .etc

Eg:System.out.printf("姓名:%d",name)

2.Formattable接口

方法:formatTo();toString()

3.创建一个格式化的字符串(静态方法 String.format()):

String message = String.format("你好呀,今天是:%tx",date)

4.Format类,DecimalFormat类.etc

6.大数值:

6.1 BigInterger 实现任意精度的整数运算(Java.math.BigInterger)

6.2 BigDecimal 实现任意精度的浮点运算  (Java.math.BigDecimal)

7.数组

7.0参考文档:

Java数组(初学者必看)http://www.importnew.com/7127.html

7.1性质:

1)数组被作为Java对象,通过new创建。

2)获取数组容量:Arrays.length()可得数组长度

3)数组存储在Java堆的连续内存空间

4)数组一个固定长度的数据结构

5)你可以通过使用[]操作符访问数组元素

6)如果没有明确的初始化数组元素,那么数组就会用默认的类型值初始化

7)数组可以轻易的转换成ArrayList

8)通过java.utils.Arrays类去操作数组,通过使用Arrays你可以排序数组,可以做二分搜索。

9)java.lang.System.arrayCopy()提供了实用方法拷贝元素到另一个数组。

10)支持多维数组

int[][] multiArray =new int[2][3]int[][] multiArray = {{1,2,3},{10,20,30}};

7.2数组与字符的存储区别?

7.3数组创建方式:

int Arrs0[] = {3,5,66,9,4,5};

int[] intArray1;   //creating array without initializing or specifying size

int intArray2[];  //another int[] reference variable can hold reference of an integer array

int[] intArray3 = new int[10]; //creating array by specifying size

int[] intArray4 = new int[]{1,2,3,4}; //creating and initializing array in same line.

(可以读int[] Var为int数组 Var,更容易理解其语法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值