java文件编码相关知识
-
java项目文件乱码问题1.GBK GBK编码中文占用2个字节,英文占用1个字节 2.UTF-8 中文占用3个字节,英文占用1个字节 java是双字节编码是utf-16be 中文占用两个字节,英文占用两个字节 文本文件是字节序列 在中文机器上直接创建文本文件,只能认识ansi编码 每个java项目都有一种默认的编码格式,如果默认编码格式和文件编码不一致,就会导致乱码, 为什么经常出现中文乱码,那是因为中文在不同的编码中所占的字节一般不同
-
Java 源代码编译成 Class 文件的过程分析原文链接:http://www.codeceo.com/article/compile-java-source-code-into-a-class-file.html在上篇文章《Java三种编译方式:前端编译 JIT编译 AOT编译》中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程。下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程;我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的。1、javac编译器1-1、javac源码与调试javac编译器是官方JDK中提供的前端编译器,JDK/bin目录下的javac只是一个与平台相关的调用入口,具体实现在JDK/lib目录下的tools.jar。此外,JDK6开始提供在运行时进行前端编译,默认也是调用到javac,如图:javac是由Java语言编写的,而HotSpot虚拟机则是由C++语言编写;标准JDK中并没有提供java
-
文件编码前言: 记得前不久,我在公司封闭式开发的日子里,我在宿舍的机子,被同学弄得满身病毒,其中之一是病毒在所有的html里者插入了一段iframe 之后我一不小心..编了段小程序来替换掉所有的iframe,当时忘了文件编码问题.. 现在打开才发现一大堆乱码在里面现在发现了..当然是要解决了:简单看了一下文件流读出来的字节.做了简单的文件类型编码判断代码如下: 1 /**//// <summary> 2 /// 获得文件编码 3 /// </summary&
-
从 HelloWorld 看 Java 字节码文件结构很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么。今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构。 在开始之前,我们先写一个最简单的入门 Hello World。 public class Demo{ public static void main(String args[]){ System.out.println("Hello World."); } } 接着在命令行运行javac Demo.java命令编译这个类,这时会生成一个 Demo.class 文件。 接着我们用纯文本编辑器打开生成的 Demo.class
java文件编码相关课程
java文件编码相关教程
- 4. 设置文件编码 不同类型的文件使用不同的方法来定义编码。PyCharm 根据文件的内容识别文件的编码。编码对 PyCharm 读取或写入文件的方式有影响。通常,我们写 Python 或者其它项目都习惯地将编译器调成UTF-8 编码,以防乱码。
- 1.1 Java 中的编译 在 Java 中,程序不是直接被编译为可执行文件,而是被编译为字节码文件, JVM(Java虚拟机)在运行时执行字节码文件。当我们使用 javac 编译器时,Java 源代码文件被编译为字节码文件,字节码文件以扩展名 .class 的形式保存在磁盘上。当程序运行时,字节码文件将被转换为机器代码,并在内存中执行。总的来说,Java 源代码需要被“转换”两次才能被计算机执行:Java 源代码被编译为字节码:由 javac 前端编译器完成;字节码被编译为机器码:由 JVM 的执行引擎完成。下图描述了一个Java程序从编写到编译,再到执行的步骤:
- 3.2 Java 文件编写 以上代码主要实现了两个 Button 及一个 ScrollView,可以看到 ScrollView 中只有一个 LinearLayout,而 LinearLayout 中只有两个 Button,所以我们需要在 Java 代码中动态添加 Button,这里也可以让大家熟悉一下如何动态创建并添加 Button。接下来在 Java 代码中主要做两件事:为两个 Button 设置点击事件,分别实现回到顶部及跳转到底部;往 ScrollView 中添加 View,并绑定点击事件。代码如下:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener { public static final int BUTTON_COUNT = 10; private ScrollView mScrollView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.bt_to_top).setOnClickListener(this); findViewById(R.id.bt_to_bottom).setOnClickListener(this); mScrollView = findViewById(R.id.scrollView); LinearLayout layout = findViewById(R.id.button_group); for (int i = 0; i < BUTTON_COUNT; i++) { Button button = new Button(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.topMargin = 100; layout.addView(button, params); button.setOnClickListener(this); button.setText(i + ""); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_to_top: mScrollView.fullScroll(ScrollView.FOCUS_UP); break; case R.id.bt_to_bottom: mScrollView.fullScroll(ScrollView.FOCUS_DOWN); break; default: Toast.makeText(this, "当前点击的是第" + ((Button) v).getText() + "个Button", Toast.LENGTH_SHORT).show(); break; } }}效果如下:我们在代码中通过 for 循环往 ScrollView 中添加了 10 个 Button,动态添加一个 View 主要有以下 4 步:通过构造器创建 View。设置其属性(宽、高、margin、padding 等)。设置响应事件(比如点击、触摸、滚动等)。添加到相应的 ViewGroup 中。我们在创建 Button 的同时通过setText及setOnClickListener设置了文本及点击事件,然后在点击的时候展示当前 Button 的序号。
- 4.1 如何设置文件编码? 在主窗口中依次点击 File -> Settings -> Editor -> File Encoding 来到设置文件编码窗口:Mac 下安装的 PyCharm 有所不同,点击 Pycharm -> Preferences -> Editor -> File Encoding 来到设置文件编码窗口:如果你使用的是 Python2 版本,并且文件里包括中文时,需要在 .py 文件的头部做下面的声明。这一步的目的是告诉 Python 编译器以 UTF-8 编码去加载所有字符。#!/usr/bin/env python2# -*- coding: utf-8 -*-
- 3.2 编写 Java 代码 Java 代码相对比较简单,因为补全的结果是一个字符串数组,补全列表的列表项也都是单个项目,所以这里直接使用ArrayAdapter再好不过(关于 ArrayAdapter 的使用详见 23 节),代码如下:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;public class MainActivity extends Activity { private AutoCompleteTextView mTextView; private String[] mDataName = {"慕课", "慕课网", "慕课Android教程", "慕斯蛋糕", "慕容复"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = findViewById(R.id.autoCompleteTextView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, mDataName); mTextView.setAdapter(adapter); }}首先我们将补全项存入字符串数组中,然后获取 AutoCompleteTextView 对象,创建 ArrayAdapter,最后为 AutoCompleteTextView 对象指定 Adapter 即可。其中在创建 ArrayAdapter 的时候我们传入了一个 id 为android.R.layout.simple_dropdown_item_1line的布局文件,它是 Android 系统为我们内置的专门用于下拉菜单使用的布局文件,其实里面只有一个 TextView 用于显示下拉菜单项,查看源码如下:<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/dropDownItemStyle" android:textAppearance="?android:attr/textAppearanceLargePopupMenu" android:singleLine="true" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:ellipsize="marquee" />我们在使用下拉菜单类型的样式时都可考虑直接采用系统样式,最终编译出来屏幕中有一个输入框,我们输入一个“慕”字,会展示以慕开头的所有可补全的字符串,结果如图所示:
- 1.4 源代码文件 既然源代码需要提供给计算机执行,我们就要将源代码以文件的形式保存在计算机的磁盘上。需要注意的是:源代码文件的命名必须与类名相同,且后缀名为.java。例如:HelloWorld 类对应的源代码文件名应该为 HelloWorld.java,而 ImmocStudent.java 源代码文件的对应类名为 ImmocStudent。
java文件编码相关搜索
-
j2ee
j2ee是什么
jar格式
java
java api
java applet
java c
java jdk
java list
java map
java script
java se
java socket
java swing
java switch
java web
java xml
java 程序设计
java 多线程
java 环境变量