`

【笔记】基本的设计

 
阅读更多

        java中所有数值类型所占的字节数与平台无关,每一种数据的取值范围是固定的,int、short、long、byte分别占4,2,8,1个字节,float、double占4,8个字节。

 

        float类型有后缀F,没有后缀的浮点数默认为double类型,double类型的数据后缀可以加上D。

 

        char类型是用UTF-16编码描述的一个代码单元。

 

        变量名以字母开头由数字或者字母组成。大小写敏感,长度没有限制,不能是保留字,不能有空格、“+”等符号。

 

        类常量用static final修饰,final变量表示变量只能赋值一次,一旦赋值就不能改变。

 

        二元操作时数据转换规则:若一个数为double,另一个转换为double;否则,若一个为float,则另外一个转换为float;否则,若一个为long,另一个转换为long;否则,两个数都转换为int。

 

        枚举: enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};

                   Size s=Size.MEDIUM;

 

        String是不可变字符串,这样可以让编译器共享字符串,可以用equals方法来检查两个字符串的内容是否相同。而“==”检测两个字符串是否放在同一位置。

       

在java中char采用UTF-16编码的,也就是说,char是代表一个字符单元,占两个字节。

 

代码单元:UTF-8中是用8个字节表示的,UTF-16中使用16个字节表示的等等。

 

代码点:对应各种真正字符(char不是真正的字符,是代码单元)的Unicode编码。一个代码点可能对应一对代码单元,如辅助字符。

 char ch=str.charAt(2);获取代码单元,但是如果这个代码单元时某个代码点的一部分(它和另外一个代码单元构成一个代码点,如辅助字符),那么ch任然显示的是整个代码点。所以不建议使用char类型。

codePointAt获得代码点,可以用如下方式遍历代码点:

          int cp = aString.codePointAt(index);
                 if (Charater.isSupplementaryCodePoint(cp))

                    i += 2;
                   else
                            i++;

 

        StringBuilder是可变字符串。

        StringBuilder builder=new StringBuilder();

        builder.append(ch);    //append a character

        builder.append(str);    //append a string

 

        控制台输入:需要将标准输入System.in与一个Scanner对象关联

            Scanner in=new Scanner(System.in);

        Scanner有nextLine,next(以空格分开),nextInt,hasNext,hasNextInt等方法。

        控制台输出:用标准输出System.out

              System.out.printf可以控制输出格式。%后面加d,f,s,c表示十进制整数、浮点数、字符串、字符。System.out.printf("%8.2f",x);以宽为8,小数位数为2输出。

 

        文件输入:从文件中读取用    Scanner in=new Scanner(new File("C:\\mydir\\file.txt"));

这里反斜杠需要两个,如果文件不存在,那么会发生异常。

        文件输出:写入文件时需要用PrintWriter对象,  PrintWriter out=new PrintWriter("file.txt");

注意Scanner中参数为File,而PrintWriter中参数为String(文件名)。

 

        switch语句中,case标签必须是整数或枚举变量,不能测试字符串。

 

        java.math包中有两个表示大数据的类BigInteger和BigDecimal。其加减乘除用add、substract、mutiply、divide表示。

              BigInteger c=BigInteger.valueOf(100);

              BigInteger b=g.mutiply(BigInteger.valueOf(10000));

 

        数组是存储同一类型的数据的集合,它是引用类型。

        声明及初始化:int[] a;int a[];int b[]={2,3,5};  //左边不能有数据大小

        长度:array.length,长度可以为0

        for each: for(int x:b)   //遍历b

                               System.out.println(x);

还可以用如下方式打印数组:System.out.println(Array.toString(b));

        数组的拷贝:  int[] lucky={2,4,6};

                               int[] good=Array.copyof(lucky,lucky.length*2);   //good={2,4,6,0,0,0}

这里多余的元素赋值0,如果是boolean类型的,多余元素赋值为false。

        排序:int[] a=new int[1000];  ...  ...

                   Array.sort(a); //用快速排序将a从小到达排序

         多维数组的for each循环:

                  double[][] a=......;

                  for(double[] row:a)

                      for(double value:row)

                             System.out.println(value);

                      也可以用System.out.println(Array.deepToString(a));输出。

           不规则数组:java实际没有多维数组,只有一维数组,多维数组可以理解为是“数组的数组”。

                  int [][]  old=new int[4][];

                  for(int i=0;i<3;i++)

                       old[i]=new int[i+1];

 

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABCDEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。 

 

public class Test1 {
	public static void main(String[] args) throws UnsupportedEncodingException{
		split("我ABC",4);
		split("我ABC汉DEF",6);
		
		/**
		 * 对于UTF-8:‘我’占3个字节,‘a’占1个字节
		 * 对于java采用的UTF-16,‘我’占2个字节,‘a’占2个字节,不过他们前面貌似还有两个字节(feff),表示规则吧
		 * 所以‘我’.getBytes("UTF-8")得到4,‘我们’.getBytes("UTF-8")得到6
		 * 对于GBK,‘我’占两个字节,‘a’占一个字节
		 */
		//System.out.println("我a".getBytes("UTF-16").length);
		
	}
	
	public static void split(String source,int num) throws UnsupportedEncodingException{
		int k=0;
		String temp="";
		for (int i = 0; i <source.length(); i++){	
			byte[] b=(source.charAt(i)+"").getBytes("GBK");//"我".getBytes("UTF-8")得到3
			k=k+b.length;
			if(k>num){
				break;
			}
			temp=temp+source.charAt(i);			
		}	
		System.out.println(temp);
	}
}

 

分享到:
评论

相关推荐

    FPGA自学笔记——设计与验证公开版

    通过上述内容的介绍,可以看出FPGA自学笔记——设计与验证公开版不仅涵盖了FPGA的基本原理和技术细节,还深入探讨了FPGA技术的发展趋势及其在实际应用中的重要性。这对于初学者来说是非常宝贵的学习资源。

    机械设计笔记交大专用

    在这些笔记中,你会了解到机械设计的基本概念,包括力学原理、材料科学、热力学以及机械传动等基础知识。这部分内容是所有后续深入学习的基础,对理解机械系统的运作至关重要。 二、机构与构件设计 笔记详细介绍了...

    Zynq学习笔记(基本设计流程)

    Zynq学习笔记(基本设计流程) Zynq学习笔记是学习Zynq的基本设计流程的笔记,涵盖了Zynq的基本设计流程和相关的知识点。本笔记将指导读者如何使用Vivado2013.2设计工具来创建一个Zynq项目,包括创建一个新的项目、...

    Verilog数字系统设计教程读书笔记.docx

    Verilog的基本设计单元是模块(block)。一个模块由两部分组成,一部分描述接口,另一部分描述逻辑功能,即定义输入是如何影响输出的。模块的端口声明了模块的输入输出口,其格式如下:module 模块名(口1, 口2, 口3,...

    基于SSM的云笔记系统设计与实现.doc

    基于SSM的云笔记系统设计中,前端展示界面和后端编辑界面是两个主要部分。前端界面主要负责用户的交互,包括用户注册、登录、笔记的搜索和查看。后端界面则是管理员进行笔记管理的地方,如数据信息管理、成员管理、...

    软件设计师学习笔记.pdf

    通过深入学习《软件设计师学习笔记.pdf》,读者不仅可以掌握软件设计的基本理论,还能了解实际工作中可能遇到的问题及解决方案,为成为一位优秀的软件设计师打下坚实基础。这份笔记无疑是软件设计师学习道路上的一盏...

    软件设计师个人学习笔记

    《软件设计师个人学习笔记》是一份详实的学习资料,涵盖了软件设计师考试的重要知识点。这份笔记以照片形式呈现,便于读者更直观地理解和记忆。以下是对笔记内容的详细解析: 第一章 计算机网络概论 在这一章中,...

    轻笔记网页设计htm

    网页设计是互联网时代不可或缺的一部分,它涉及到用户与网站交互的视觉和功能体验。"轻笔记网页设计htm"是一个专门关注云笔记类型...这样的设计不仅能满足用户的基本需求,也能提升其在使用过程中的满意度和忠诚度。

    FPGA自学笔记--设计与验证

    FPGA自学笔记--设计与验证的知识点: 1. FPGA的介绍与发展 FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可以通过编程来配置其逻辑功能和互连结构的集成电路。FPGA的发展经历了从最初简单的逻辑...

    FPGA自学笔记——设计与验证jmb

    《FPGA自学笔记——设计与验证jmb》是一本针对初学者精心编写的教程,旨在帮助读者快速掌握FPGA(Field-Programmable Gate Array,现场可编程门阵列)的基础知识并进行实际的设计与验证。小梅哥,这位业界知名人士,...

    设计模式笔记

    下面将详细讨论设计模式的基本理念及其重要性,并列举一些常见的设计模式。 设计模式的核心思想是将经验转化为可复用的解决方案。它通过总结和抽象在实际开发过程中遇到的问题,为开发者提供了一套标准的沟通方式和...

    《设计模式学习笔记》

    《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...

    JAVA程序设计学习笔记.pdf

    JAVA 程序设计学习笔记是一个详细的学习笔记,涵盖了 JAVA 程序设计的基本概念、语言特征、类库、环境设置、安装等方面的知识点。 1. JAVA 程序设计的基本概念 JAVA 程序设计是一种基于面向对象编程(Object ...

    软件设计师复习笔记资料.rar

    【软件设计师复习笔记资料】 软件设计师作为信息技术领域中的一个重要角色,负责设计、开发和维护软件系统,其专业技能涵盖广泛,包括但不限于编程语言、软件工程、数据库管理、网络技术、操作系统、项目管理等多个...

    软件设计师软考笔记.zip

    4. **数据库管理**:介绍了数据库的基本概念、SQL语言、数据库设计原则等,为处理数据存储提供理论支持。 5. **软件工程**:涵盖了软件生命周期的各个阶段,如需求获取、系统分析、设计、编码、测试和维护,强调软件...

    算法设计与分析笔记

    然而,从标题“算法设计与分析笔记”以及描述“算法笔记”来看,我们可以尝试围绕算法设计与分析这一主题来构建相关知识点。接下来,将详细介绍与算法设计和分析相关的知识点,包括但不限于算法的基本概念、分类、...

    Vue技术栈实现的云笔记项目,印象笔记的功能基本都实现.zip

    该项目基于Vue技术栈实现了一个云笔记应用,名为“vue-evernote-master”,其设计灵感和功能特点借鉴了知名的云笔记服务——印象笔记。Vue.js作为前端框架,提供了强大的组件化开发能力,使得项目的结构清晰,代码...

    【书本源码V1.3】FPGA自学笔记——设计与验证

    《FPGA自学笔记——设计与验证》是一本深入探讨FPGA(Field-Programmable Gate Array)技术的书籍,旨在帮助读者掌握FPGA的设计与验证方法。书本源码V1.3提供了丰富的实例和练习,使学习者能通过实践加深理解。...

Global site tag (gtag.js) - Google Analytics