美文网首页
第三章----Java基本设计结构

第三章----Java基本设计结构

作者: 枫子夜 | 来源:发表于2018-11-28 23:00 被阅读13次
Java

Java类组成

  • 修饰符 class 类名 { 类主体 } 如:
public class FirstSample{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
注:Java类名命名规范:必须以字母开头,后面可是字母或数字,长度无限制。首字母大写、每个单词首字母大写(骆驼命名法)。
    Java中以分号代表语句的结束。

数据类型

  • Java是强类型语言,一共有8中基本数据类型,其中4中整型,2种浮点型,1种字符型,1中真值型。
类型 存储 范围
byte 1字节 -128 ~ 127
short 2字节 -32768 ~ 32767
int 4字节 -21.47亿 ~ 21.47亿
long 8字节 好大呀
- - -
float 4字节 有效位数6-7位
double 8字节 有效位数15位
- - -
char 单个字符 不常用
- - -
boolean true、false 逻辑判断

变量

  • 每个变量都有一个类型,变量以字母开头且有字母和数字组成(不能用Java关键字),采用首字母小写、每个单词字母大写的规则。
  • 被关键字final修饰的变量叫做常量,常量表示一旦被赋值就无法再更改值,常量一般全部大写。static final 修饰为静态常量。

运算符

1. + - * / 分别表示加减乘除,其中Math类中包含了各种各样的数学函数。
2. ++n,n++ 都是表示变量n+1,但是在关系表达式中++n是先运用再+1,后者是先+1再运用。
3. < > <= >= && || 分别表示小于、大于、小于等于、大于等于、逻辑并且、逻辑或。&& 有短路作用,即如果第一个表达式已经确定值就不在计算后一个表达式。
4. 三元运算符:表达式?true值:false值。
  • 类型转换
    1.如果两个值中有一个是double,操作后为double;
    2.如果两个值中有一个是float,操作后是float;
    3.如果两个值中有一个是long,操作后是long;
    4.否则操作后为int;
    5.当一个字符串和任何类型拼接时,操作后是String
    注:强制类型转换会丢失一部分信息。

字符串

  • 字符串就是Unicode字符序列,Java提供了预定义的字符串类String。String是不可变的,也就是说变量的值是什么就是什么,一直不能改变。之所以这样设计是因为Java设计者觉得共享带来的效率高于提取拼接等操作。
  • 编译器可以让字符串共享,可以想象各种字符串存放在公共的存储池中,字符串变量指向存储池中的位置,如果复制一个字符串变量,那他们共同享用存储池中的字符串。
  • 字符串==比较的是内存地址,字符串相同但内存地址不一定相等,所以比较字符串应该用equals。
  • String常用API
1. IntStream codePoints();
2. boolean endsWith(String prefix);
3. int indexOf(String str);    不存在返回-1
4. String subString(int beginIndex , int endIndex);    endIndex是不想截取的第一个位置
5. String join("*","L","O","V","E");    L*O*V*E
  • String vs StringBuilder vs StringBuffer
1:效率
    StringBuilder>StringBuffer>String:
    由于String是不可改变的,所以在拼接的时候JVM会回收原来的字符串并创建新的字符串,这样效率很慢。
    而StringBuilder和StringBuffer都是变量可以直接更改而不需要回收创建,所以效率会很快。
2:线程安全
    StringBuilder是线程不安全的,StringBuffer是线程安全的,其中内置了很多synchronized的方法来保证线程安全,这也是为什么StringBuffer效率低于StringBuilder的原因。

输入输出

  • Scanner常用API
1. Scanner in = new Scanner(System.in);        创建输入流
2. Scanner(InputStream in);
3. String next();         读取下一个单词(空格分割)
4. int nextInt();
5. double nextDouble();
6. boolean hasNext();
7. Scanner(File f);
8. Scanner(String data);
  • Console常用API
1. Console cons = System.console();
2. static String readLine(String prompt, object ... args);        读取用户输入
  • Paths and PrintWriter
1. Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");
2. PrintWriter out = new PrintWriter("myfile.txt","UTF-8");

流程控制

  • 控制流程常用语句
1. if(){}else{}
2. if(){}else if(){} else{}
3. while(){}
4. do{} while()
5. for(int i=0;i<10;i+){}
6. for(l类型 变量 : 待循环变量){}
7. Switch(){case 判断值:   代码段;break; } 类型可为:char,btye,short,int,String,枚举常量
8. break and continue and  return,break结束本层循环;continue中止本次循环,继续下一个循环;return 结束程序并返回值。

大数值

  • BigInteger and BigDecimal常用API
1. BigInteger valueOf(int i );        转换
2. add(BigInteger other);             和
3. subtract(BigInteger other);        差
4. multiply(BigInteger other);        积
5. divide(BigInteger other);          商
6. mod(BigInteger other);             余
8. compareTo(BigInteger other);       比较,=0 <负数 >正数

数组

  • 数组是一种数据结构,用来存储同一类型值得集合,通过下标可以访问每一个元素的值,下标从0开始。
  • 数组操作
1. int[] a = new int[100];
2. int[] a = {1,2,3};
3. int[] b = Arrays.copyOf(a , a.length);
4. Arrays.sort(a);
5. Arrays.toString(a);
6. Arrays.copyRange(a , start , end);
7. Arrays.equals(a , b);
8. 二维数组(矩阵)、多维数组其实都是数组里面嵌套数组

注:初始化没有赋值的数组:数值型赋值为0,布尔型赋值为false,String赋值为null。

愿你经历山河,觉得人间值得

相关文章

网友评论

      本文标题:第三章----Java基本设计结构

      本文链接:https://www.haomeiwen.com/subject/dmjwqqtx.html